javascript - Hvordan få gjeldende dato og/eller tid i sekunder
Hvordan får jeg gjeldende dato og/eller tid i sekunder ved hjelp av Javascript?
Svar #1
var seconds = new Date().getTime() / 1000;
....vil gi deg sekundene siden midnatt, 1. jan 1970
Referanse
Svar #2
Å bruke new Date().getTime()/1000 er en ufullstendig løsning for å få sekunder, fordi det produserer tidsstempler med flyttallsenheter:
new Date() / 1000; // 1405792936.933
// Technically, .933 would be in milliseconds
Som kan forårsake uønskede resultater i betingede utsagn:
if (1405792936.993 < 1405792937) // true
Bruk i stedet:
Math.round(Date.now() / 1000); // 1405792937
// Or
Math.floor(Date.now() / 1000); // 1405792936
// Or
Math.ceil(Date.now() / 1000); // 1405792937
// Note: In general, I recommend `Math.round()`,
// but there are use cases where
// `Math.floor()` and `Math.ceil()`
// might be better suited.
Advarsel: Bitvise operatorer kan brukes til å trunkere flyttallsenheter, men kan også forårsake problemer når man arbeider med tidsstempler. For eksempel er følgende bitvise uttrykk (new Date()/1000) | 0 mindre foretrukket enn Math.floor(Date.now()/1000), fordi det forårsaker følgende problemer:
- Som standard er Javascript-tall type 64-biters (dobbel presisjon) flyttall, og bitvise operatorer konverterer implisitt den typen til signerte 32-biters heltall. Man kan hevde at typen ikke burde bli implisitt konvertert av kompilatoren, men i stedet eksplisitt konvertert av utvikleren i koden.
- Den signerte 32-bits heltalls-tidsstempelet som produseres av bitvis-operatoren, forårsaker år 2038-problemet som nevnt i kommentarene.
Svar #3
Date.now()
gir millisekunder siden epoken. Ingen behov for å bruke new.
Sjekk referansen her: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now
(Støttes ikke i IE8.)
Svar #4
Basert på kommentaren din, tror jeg du leter etter noe slikt:
var timeout = new Date().getTime() + 15*60*1000; //add 15 minutes;
Så i sjekken din, sjekker du:
if(new Date().getTime() > timeout) {
alert("Session has expired");
}
Svar #5
For å få antall sekunder siden Javascript-epoken, bruk:
date = new Date();
milliseconds = date.getTime();
seconds = milliseconds / 1000;
Svar #6
// The Current Unix Timestamp
// 1443535752 seconds since Jan 01 1970. (UTC)
// Current time in seconds
console.log(Math.floor(new Date().valueOf() / 1000)); // 1443535752
console.log(Math.floor(Date.now() / 1000)); // 1443535752
console.log(Math.floor(new Date().getTime() / 1000)); // 1443535752<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>jQuery
console.log(Math.floor($.now() / 1000)); // 1443535752<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>