2010-09-30 9 views
220

Come posso ottenere la data e l'ora correnti in secondi in Javascript?Ottieni la data e l'ora correnti in secondi

+1

Eventuali duplicati di [Come si ottiene un timestamp in JavaScript?] (Http://stackoverflow.com/questions/221294/how-do-you-get-a-timestamp-in-javascript) – GottZ

risposta

337
var seconds = new Date().getTime()/1000; 

... ti darà i secondi da mezzanotte, 1 gennaio 1970

Reference

+8

Mentre questo è accurato, quando sarebbe utile? :) –

+0

@ sje397 - Sì ... ma la domanda (come la maggior parte su SO) è più probabile che risolva un problema * pratico *, puoi darmi un esempio in cui vorresti visualizzare questo risultato? –

+5

@Nick - Penso che tutti gli esempi siano necessariamente speculativi e sembrino inventati - ma farò uno scatto :) Supponiamo che tu abbia data/ora di data con l'ora di unix, e vuoi determinare la sua età. Più penso che questo sia ciò che è probabilmente inteso da "la data/ora corrente in secondi"; solo il mio istinto. – sje397

37

Sulla base di un commento, penso che tu sia alla ricerca di qualcosa di simile:

var timeout = new Date().getTime() + 15*60*1000; //add 15 minutes; 

Poi, nel tuo assegno, si sta controllando:

if(new Date().getTime() > timeout) { 
    alert("Session has expired"); 
} 
14

Per ottenere il numero di secondi dall'uso dell'epoca Javascript:

date = new Date(); 
milliseconds = date.getTime(); 
seconds = milliseconds/1000; 
33

Uso new Date().getTime()/1000 è una soluzione incompleto per ottenere i secondi, perché produce timestamp con unità a virgola mobile.

var timestamp = new Date()/1000; // 1405792936.933 
// Technically, .933 would be milliseconds. 

Una soluzione migliore sarebbe:

var timestamp = new Date()/1000 | 0; // 1405792936 
// Floors the value 

// - OR - 

var timestamp = Math.round(new Date()/1000); // 1405792937 
// Rounds the value 

valori senza galleggianti sono anche più sicuro per le istruzioni condizionali, come il galleggiante può produrre risultati indesiderati. La granularità ottenuta con un float potrebbe essere più che necessaria.

if (1405792936.993 < 1405792937) // true 
1

modo più elegante per ottenere il tempo in secondi/millisecondi dal 1 Gennaio 1970 è

var milliseconds = +new Date();   
var seconds = milliseconds/1000; 
0

Mi permetto di suggerire una migliore scorciatoia:

+new Date # Milliseconds since Linux epoch 
+new Date/1000 # Seconds since Linux epoch 
Math.round(+new Date/1000) #Seconds without decimals since Linux epoch 
5

// 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>

0

Questi JavaScript soluzioni che danno i millisecondi o secondi a partire dalla mezzanotte, 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 ottenere maggiori 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. 

fare attenzione ad usare, se non si vuole qualcosa di simile a questo caso.

if(1000000 < Math.round(1000000.2)) // false. 
Problemi correlati