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:

  1. 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.
  2. 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>

Relaterte artikler