Risposte:
var seconds = new Date().getTime() / 1000;
.... ti darà i secondi dalla mezzanotte del 1 ° gennaio 1970
Date.now()
dà millisecondi dall'epoca. Non c'è bisogno di usare new
.
Dai un'occhiata al riferimento qui: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now
(Non supportato in IE8.)
L'utilizzo new Date().getTime() / 1000
è una soluzione incompleta per ottenere i secondi, poiché produce timestamp con unità a virgola mobile.
const timestamp = new Date() / 1000; // 1405792936.933
// Technically, .933 would be milliseconds.
Una soluzione migliore sarebbe:
// Rounds the value
const timestamp = Math.round(new Date() / 1000); // 1405792937
// - OR -
// Floors the value
const timestamp = new Date() / 1000 | 0; // 1405792936
I valori senza float sono anche più sicuri per le istruzioni condizionali, poiché il float può produrre risultati indesiderati. La granularità che si ottiene con un galleggiante può essere più del necessario.
if (1405792936.993 < 1405792937) // true
Math.round(new Date() / 1000)
Sulla base del tuo commento, penso che tu stia cercando qualcosa del genere:
var timeout = new Date().getTime() + 15*60*1000; //add 15 minutes;
Quindi nel tuo controllo, stai controllando:
if(new Date().getTime() > timeout) {
alert("Session has expired");
}
// 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>
Queste soluzioni JavaScript offrono millisecondi o secondi dalla mezzanotte del 1 gennaio 1970.
La soluzione IE 9+ (IE 8 o la versione precedente non supporta questo.):
var timestampInMilliseconds = Date.now();
var timestampInSeconds = Date.now() / 1000; // A float value; not an integer.
timestampInSeconds = Math.floor(Date.now() / 1000); // Floor it to get the seconds.
timestampInSeconds = Date.now() / 1000 | 0; // Also you can do floor it like this.
timestampInSeconds = Math.round(Date.now() / 1000); // Round it to get the seconds.
Per ulteriori informazioni su Date.now()
: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now
La soluzione generica:
// ‘+’ operator makes the operand numeric.
// And ‘new’ operator can be used without the arguments ‘(……)’.
var timestampInMilliseconds = +new Date;
var timestampInSeconds = +new Date / 1000; // A float value; not an intger.
timestampInSeconds = Math.floor(+new Date / 1000); // Floor it to get the seconds.
timestampInSeconds = +new Date / 1000 | 0; // Also you can do floor it like this.
timestampInSeconds = Math.round(+new Date / 1000); // Round it to get the seconds.
Fai attenzione, se non vuoi qualcosa come questo caso.
if(1000000 < Math.round(1000000.2)) // false.
Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000
Questo dovrebbe darti i millisecondi dall'inizio della giornata.
(Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000)/1000
Questo dovrebbe darti secondi.
(Date.now()-(Date.now()/1000/60/60/24|0)*24*60*60*1000)/1000
Come il precedente tranne che utilizza un operatore bit a bit per indicare il numero di giorni.
Puoi incontrare un altro modo per ottenere il tempo in secondi / millisecondi dal 1 ° gennaio 1970:
var milliseconds = +new Date;
var seconds = milliseconds / 1000;
Ma fai attenzione con tale approccio, perché potrebbe essere difficile da leggere e capire.
Migliori scorciatoie:
+new Date # Milliseconds since Linux epoch
+new Date / 1000 # Seconds since Linux epoch
Math.round(+new Date / 1000) #Seconds without decimals since Linux epoch
Per ottenere i secondi totali del giorno di oggi:
getTodaysTotalSeconds(){
let date = new Date();
return +(date.getHours() * 60 * 60) + (date.getMinutes() * 60);
}
Ho aggiunto +
in cambio quale ritorno int
. Questo può aiutare altri sviluppatori. :)