Milisegundos epoch a fecha: convierte timestamps de 13 dígitos y valores long
Una guía para convertir milisegundos epoch en fechas legibles. Cubre timestamps de 13 dígitos, Date de JavaScript, valores long de Java, milisegundos frente a segundos y por qué la unidad equivocada produce fechas de 1970 o muy lejanas.
Qué son los milisegundos epoch
Los milisegundos epoch cuentan los milisegundos desde el 1 de enero de 1970 a las 00:00:00 UTC. Usan el mismo epoch Unix que los segundos Unix, pero con tres dígitos más de precisión. Un valor moderno de milisegundos epoch suele tener 13 dígitos, como 1700000000000.
Cómo convertir millis a fecha
Si el valor ya está en milisegundos, JavaScript Date puede leerlo directamente. Si la herramienta receptora espera segundos, divide primero entre 1000. El error principal es multiplicar o dividir en el límite equivocado.
- JavaScript: new Date(1700000000000).toISOString()
- Milliseconds to seconds: Math.floor(1700000000000 / 1000)
- Seconds to milliseconds: 1700000000 * 1000
- Java Instant: Instant.ofEpochMilli(1700000000000L)
- Python: datetime.fromtimestamp(ms / 1000, tz=timezone.utc)
Long a fecha en Java y bases de datos
Las búsquedas de «long a fecha» suelen venir de Java, Kotlin, Android o exportaciones de bases de datos donde un timestamp se guarda como entero de 64 bits. El valor puede ser milisegundos epoch, pero también segundos, microsegundos o nanosegundos. Comprueba el número de dígitos antes de convertir.
- 10 dígitos: probablemente segundos Unix
- 13 dígitos: probablemente milisegundos Unix o long de Java en milisegundos
- 16 dígitos: probablemente microsegundos
- 19 dígitos: probablemente nanosegundos
- Nombra siempre las columnas con su unidad, como created_at_ms
Por qué los milisegundos se convierten en fechas extrañas
Un valor en milisegundos tratado como segundos se convierte en una fecha extremadamente lejana en el futuro. Un valor en segundos tratado como milisegundos se convierte en una fecha cercana a enero de 1970. Los dígitos son el diagnóstico más rápido.
- 1700000000000 como milisegundos = 2023-11-14 22:13:20 UTC
- 1700000000000 como segundos = en torno al año 55840, según la librería
- 1700000000 como segundos = 2023-11-14 22:13:20 UTC
- 1700000000 como milisegundos = 1970-01-20 16:13:20 UTC
Preguntas frecuentes sobre milisegundos epoch
- ¿El tiempo epoch en ms es lo mismo que el timestamp Unix?
- Usa el mismo epoch, pero la unidad es milisegundos en vez de segundos. El timestamp Unix clásico suele significar segundos.
- ¿Cuántos dígitos tiene un timestamp en milisegundos epoch?
- Para fechas actuales, los milisegundos epoch suelen tener 13 dígitos.
- ¿JavaScript usa milisegundos o segundos?
- JavaScript Date usa milisegundos. Date.now() devuelve milisegundos epoch.
- ¿Cómo convierto un timestamp long de Java a fecha?
- Si el long está en milisegundos epoch, usa Instant.ofEpochMilli(value); si está en segundos epoch, usa Instant.ofEpochSecond(value). Comprueba primero el número de dígitos: 13 suele ser milisegundos y 10 suele ser segundos.