Milisegundos a fecha
Convierte milisegundos en una fecha legible. Introduce la marca de tiempo en milisegundos (p. ej. 1704067200000).
Sumar exactamente 24 horas en milisegundos te deja en las 13:00, no en las 12:00
Un día son 86.400.000 milisegundos, salvo los dos días del año en que no lo es. Súmalo al mediodía del cambio de hora de primavera y el reloj marca las 13:00; hazlo en el de otoño y marca las 11:00. La aritmética es correcta: un día natural y 24 horas son sencillamente cosas distintas dos veces al año.
Cómo funciona
- Convierte marcas de tiempo en milisegundos a fechas y al revés, en UTC y en hora local.
- Muestra el desglose por unidades, ya que los valores en milisegundos son difíciles de leer de un vistazo.
- Señala el límite en el que una Date deja de ser válida, un fallo que ocurre en silencio y no a gritos.
1 segundo = 1.000 ms 1 hora = 3.600.000 ms 1 minuto = 60.000 ms 1 día = 86.400.000 ms rango de Date en JavaScript = ±8.640.000.000.000.000 ms → +275760-09-13 y −271821-04-20 un milisegundo más allá → Invalid Date
Ejemplo resuelto
Sumar un día en milisegundos en cada cambio de hora, más el límite de rango.
- inicio 28 de marzo de 2026, 12:00 — sumar 86.400.000 ms → 29 de marzo, 13:00
- inicio 24 de octubre de 2026, 12:00 — sumar 86.400.000 ms → 25 de octubre, 11:00
- 8.640.000.000.000.000 ms → +275760-09-13, el máximo
- un milisegundo más → Invalid Date
- esa Invalid Date sigue siendo un objeto, y getTime() devuelve NaN
Ninguno de los dos cambios te devuelve a las 12:00, porque el día natural duró 23 o 25 horas. Y el fallo de rango es peor que una excepción: Invalid Date supera instanceof Date, así que sigue circulando y convierte en NaN todo cálculo posterior.
Cómo leer el resultado
- Usa aritmética de calendario cuando quieras decir «mañana a la misma hora» y aritmética en milisegundos cuando quieras decir «dentro de 24 horas». Coinciden 363 días al año, que es exactamente por lo que la discrepancia se detecta tan pocas veces en las pruebas.
- Invalid Date es el modo de fallo peligroso precisamente porque no es un error. Es un objeto Date cuyo getTime() es NaN, y NaN se propaga en silencio por cada operación siguiente hasta que algo mucho más abajo se muestra vacío o a cero.
- El límite de rango son ±100.000.000 días desde la época, lo bastante generoso como para que alcanzarlo signifique casi siempre una multiplicación errónea y no una fecha real: casi siempre segundos donde se esperaban milisegundos, lo que infla el valor mil veces.
- Los milisegundos caben holgadamente en el rango de enteros seguros, así que a diferencia de los nanosegundos pueden vivir en un número corriente sin perder dígitos. Esa es la razón práctica por la que la mayoría de las API se quedaron en milisegundos y no en algo más fino.
Preguntas frecuentes
- ¿Por qué mi fecha queda desfasada una hora tras sumar un día?
- Cruzaste un cambio de hora. Sumar 86.400.000 ms añade exactamente 24 horas, pero ese día natural tuvo 23 o 25. Si querías la misma hora de reloj, suma un día con aritmética de calendario en lugar de una cantidad fija de milisegundos.
- ¿Qué significa Invalid Date?
- El valor quedó fuera de ±8.640.000.000.000.000 ms o no se pudo analizar. No es una excepción: es un objeto Date cuyo getTime() es NaN, así que sigue circulando por tu código y convierte en silencio los cálculos posteriores también en NaN.