2011-01-13 8 views
15

Estoy seguro de que tengo que agregar tres ceros a cada marca de tiempo de Unix en JavaScript para obtener la fecha correcta. ¿Puedes decirme porque? ¿Es tan simple como milisegundos desde la época vs. segundos?¿Por qué necesito multiplicar las marcas de tiempo de Unix por 1000 en JavaScript?

+1

¿Porque usan diferentes unidades de medida? – spender

+0

Gracias a todos. Sabía que tenía que ser algo lógico. Mi próxima pregunta será en cuanto a cuáles podrían ser las decisiones de diseño en torno a milisegundos frente a segundos dada la semi inconsistencia. – buley

+0

¿Qué tal si contesta respuestas útiles por primera vez y acepta la respuesta que mejor resolvió su pregunta? – Phrogz

Respuesta

24

Porque Javascript usa milisegundos internamente, mientras que las marcas de tiempo UNIX normales suelen estar en segundos.

+0

¿No será esto igual a la pérdida de datos? Errores de redondeo? – Edward

+0

La multiplicación no debería perder nada, incluso El tipo 'Number' de JavaScript no es" flotante "es capaz de hacer eso sin errores de redondeo. División, por otro lado, obviamente al menos te perderá la parte en milisegundos, que las marcas de tiempo regulares de UNIX no pueden expresar de todas formas. – deceze

4

Javascript usa la cantidad de milisegundos desde la época. La marca de tiempo de Unix es segundos desde la época.

Por lo tanto, la necesidad de convertir marca de tiempo Unix en millseconds antes de usarlo en Javascript

3

tiempo Unix es el número de segundos desde la época (1 de enero 1970). En Javascript, el objeto Date espera el número de milisegundos desde la época, de ahí la diferencia de 1000 veces.

Cuestiones relacionadas