2011-01-13 5 views
15

Sono sicuro che c'è un motivo per cui devo aggiungere tre zeri a ogni timestamp Unix in JavaScript per ottenere la data corretta. Puoi dirmi perché? È semplice come millisecondi dall'epoca contro i secondi?Perché devo moltiplicare unix timestamp per 1000 in JavaScript?

+1

Perché usano diverse unità di misura? – spender

+0

Grazie a tutti. Sapevo che doveva essere qualcosa di logico. La mia prossima domanda sarà su quali potrebbero essere le decisioni di progettazione intorno ai millisecondi rispetto ai secondi data la semi-incongruenza. – buley

+0

Cosa ne pensi di invitare prima le risposte utili e accettare la risposta che meglio ha risolto la tua domanda? – Phrogz

risposta

24

Perché Javascript utilizza internamente millisecondi, mentre i normali timestamp UNIX sono in genere in secondi.

+0

Non equivale a perdita di dati? Errori di arrotondamento? – Edward

+0

La moltiplicazione non dovrebbe perdere nulla, anche Il tipo 'Number' di strano non-a-float-is-a-float di Javascript dovrebbe essere in grado di farlo senza errori di arrotondamento, mentre la divisione, d'altra parte, perderà almeno la parte in millisecondi, che i normali timestamp di UNIX non possono esprimere Comunque. – deceze

4

Javascript utilizza il numero di millisecondi dall'epoca. Il timestamp di Unix è secondi dall'epoca.

Di qui, la necessità di convertire timestamp Unix in millseconds prima di utilizzarlo in Javascript

3

tempo Unix è il numero di secondi dall'epoca (1 Gennaio 1970). In Javascript, l'oggetto Date si aspetta il numero di millisecondi dall'epoca, quindi la differenza di 1000 volte.