2012-10-05 16 views
5

Ho bisogno dell'ora in giorni. Ho visto post su come tradurlo fino ad oggi ma nessuno in pochi giorni. Sono piuttosto cattivo con l'epoca in cui ... come posso ottenere questo?Periodo di tempo JavaScript nei giorni

+0

Intendi il 1 ° gennaio 1970, da allora in poi, o cosa? – bms

risposta

22

Ho bisogno del tempo dell'epoca in giorni

io interpreto che si desidera che il numero di giorni trascorsi dell'epoca. L'epoca stessa è il giorno zero (o l'inizio del giorno 1, comunque tu vuoi vederlo).

Al centro di un oggetto Date JavaScript è un numero di millisecondi dal 1970-01-01T00: 00: 00Z. Quindi, per ottenere il numero di giorni da allora ad oggi si ottiene semplicemente il valore del tempo attuale e dividerlo per il numero di millisecondi in un giorno:

var now = new Date(); 
var fullDaysSinceEpoch = Math.floor(now/8.64e7); 

Per 2012-10-05 si dovrebbe ottenere 15618. Non è sicuro se consente i secondi bisestile e simili, ma dovrebbe essere abbastanza vicino (entro pochi secondi) se l'orologio del sistema è preciso.

È solo durante la lettura dei valori di un oggetto Date (come getHours() e toString()) che viene applicato l'offset del fuso orario per fornire le ore locali.

+1

Aggiungiamo solo bisestili ogni anno o due, quindi saranno decine di migliaia di anni prima che ci sia abbastanza da influire su questo calcolo. – Barmar

+4

@ Barmar-cool, ma potrebbe esserci un momento a mezzanotte in cui il numero di giorni è scaduto di uno. Gli orologi di sistema non dovrebbero essere contati per tale precisione comunque. :-) – RobG

Problemi correlati