Skip to main content

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.

  1. inicio 28 de marzo de 2026, 12:00 — sumar 86.400.000 ms → 29 de marzo, 13:00
  2. inicio 24 de octubre de 2026, 12:00 — sumar 86.400.000 ms → 25 de octubre, 11:00
  3. 8.640.000.000.000.000 ms → +275760-09-13, el máximo
  4. un milisegundo más → Invalid Date
  5. 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.

Guía de timestamps en milisegundos

Los timestamps en milisegundos son el formato más popular en las aplicaciones web modernas y en JavaScript. Un milisegundo es una milésima de segundo, lo que ofrece más precisión que los segundos tradicionales. JavaScript (Date.now()) y la JVM devuelven la hora en este formato, lo que lo ha convertido en el estándar de facto de la mayoría de plataformas web.

JavaScript y los timestamps

En JavaScript, Date.now() devuelve el timestamp en milisegundos desde la epoch de 1970. A diferencia de otros lenguajes, JavaScript no tiene un objeto Date nativo compatible con nanosegundos. Para obtener más precisión, los programadores usan performance.now(), que devuelve fracciones de milisegundo con precisión de microsegundos.

Aplicaciones que requieren milisegundos

La precisión de milisegundos es crítica en: sistemas de trading donde importa el orden de ejecución, el perfilado de rendimiento de aplicaciones web, animaciones y juegos en el navegador para una fluidez de más de 60 FPS, sistemas IoT que recogen datos de sensores en tiempo real, y el registro de eventos para el análisis de incidencias.

Casting y conversión

Para convertir milisegundos a otros formatos: divide entre 1000 para segundos, entre 1.000.000 para nanosegundos, entre 1000 × 60 para minutos, etc. Windows .NET y otros sistemas pueden usar una epoch distinta: consulta siempre la documentación.