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
A milliseconds value treated as seconds becomes an extremely far-future date. A seconds value treated as milliseconds becomes a date near January 1970. The digits are the quickest diagnostic.
- 1700000000000 as milliseconds = 2023-11-14 22:13:20 UTC
- 1700000000000 as seconds = year 55840 range, depending on the library
- 1700000000 as seconds = 2023-11-14 22:13:20 UTC
- 1700000000 as milliseconds = 1970-01-20 16:13:20 UTC
Cross-language patterns for ms-to-date
The conversion is structurally the same in every language — divide by 1000 (carefully) or use a millisecond-aware constructor. The details that bite are precision loss and naming.
- JavaScript: new Date(1700000000000) — no division needed, Date is millisecond-based
- Python: datetime.fromtimestamp(1700000000000 / 1000, tz=timezone.utc) — float division, watch for precision loss
- Java: Instant.ofEpochMilli(1700000000000L) — exact millisecond precision preserved
- PostgreSQL: SELECT to_timestamp(1700000000000.0 / 1000) — to_timestamp expects seconds, not milliseconds
- SQLite: SELECT datetime(1700000000000 / 1000, 'unixepoch') — integer division drops fractional seconds
- Go: time.UnixMilli(1700000000000) — added in Go 1.17 specifically to avoid the seconds-vs-ms mix-up
- Ruby: Time.at(0, 1700000000000, :millisecond) for exact ms precision
- C#: DateTimeOffset.FromUnixTimeMilliseconds(1700000000000L).UtcDateTime
Related articles
FAQ
- Is epoch time in ms the same as Unix timestamp?
- It uses the same epoch, but the unit is milliseconds instead of seconds. Classic Unix timestamp usually means seconds.
- How many digits is an epoch millisecond timestamp?
- For current dates, epoch milliseconds are usually 13 digits.
- Does JavaScript use milliseconds or seconds?
- JavaScript Date uses milliseconds. Date.now() returns epoch milliseconds.
- How do I convert a Java long timestamp to a date?
- If the long is epoch milliseconds, use Instant.ofEpochMilli(value); if it is epoch seconds, use Instant.ofEpochSecond(value). Check the digit count first — 13 digits is usually milliseconds, 10 digits is usually seconds.