Conversor de epoch y timestamp Unix

Pega un tiempo epoch o un timestamp Unix para ver la fecha en UTC, en tu zona horaria y en cualquier otra, en formato ISO 8601 y RFC 2822, y cuánto tiempo hace de eso. Los segundos, milisegundos, microsegundos y nanosegundos se distinguen por su longitud, y cualquier fecha se convierte de vuelta a tiempo epoch.

Tiempo Unix actual
Segundos —
Milisegundos —
Dígitos, con un signo menos o un punto decimal si hace falta. Se ignoran los espacios y las comas entre grupos de dígitos.
Unidad

Escribe un timestamp, o pulsa «Usar ahora».

¿Lees timestamps en los registros de un servidor? Compara servidores por lo que cuestan de verdad cada mes. Desde 3,02 € al mes hoy, entre 2226 servidores.

De fecha y hora a timestamp

En la zona horaria

Introduce una fecha y una hora.

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo funciona

El tiempo Unix cuenta los segundos transcurridos desde el 1 de enero de 1970 a las 00:00:00 UTC, el epoch de Unix, sin contar los segundos intercalares. Es el mismo número en cualquier lugar de la Tierra en el mismo instante, y por eso los servidores, las bases de datos y los registros guardan el tiempo así y dejan las zonas horarias para mostrarlo.

Muchos sistemas cuentan en unidades más pequeñas: JavaScript y Java en milisegundos, algunas bases de datos y herramientas de trazado en microsegundos, Go y las interfaces del kernel de Linux a menudo en nanosegundos. El conversor las distingue por su longitud: un timestamp en segundos tiene 10 dígitos para cualquier fecha entre 2001 y 2286, en milisegundos tiene 13, en microsegundos 16 y en nanosegundos 19. Elige tú la unidad para fechas alejadas de hoy.

La fecha se muestra en UTC, en la zona horaria de tu navegador y en una zona que elijas, con la base de datos de zonas horarias de tu navegador, de modo que el horario de verano se aplica tal como era en esa fecha. ISO 8601 es el formato para datos y API; RFC 2822 es el de las cabeceras del correo electrónico.

Ejemplo

1700000000 es el 14 de noviembre de 2023 a las 22:13:20 UTC: 2023-11-14T22:13:20Z en ISO 8601 y Tue, 14 Nov 2023 22:13:20 +0000 en RFC 2822. En Nueva York eran las 17:13:20 del mismo día, y en la India las 03:43:20 del siguiente. El mismo instante en milisegundos es 1700000000000.

Tiempo Unix en código

El tiempo epoch actual, y un epoch de vuelta a una fecha, en los lenguajes que más se usan en un servidor:

epoch
# Bash (GNU date; macOS: date -r 1700000000)
date +%s
date +%s%3N          # milliseconds
date -d @1700000000

# Python
import time; int(time.time())
from datetime import datetime, timezone; datetime.fromtimestamp(1700000000, timezone.utc)

// JavaScript
Math.floor(Date.now() / 1000)
new Date(1700000000 * 1000).toISOString()

<?php
time();
date('c', 1700000000);

-- SQL
SELECT UNIX_TIMESTAMP();                    -- MySQL, MariaDB
SELECT EXTRACT(EPOCH FROM now())::bigint;   -- PostgreSQL
SELECT unixepoch();                         -- SQLite 3.38+
SELECT to_timestamp(1700000000);            -- PostgreSQL: epoch to date

Preguntas

¿Qué es el tiempo epoch?

El tiempo epoch, también llamado tiempo Unix, es el número de segundos transcurridos desde el epoch de Unix: el 1 de enero de 1970, 00:00:00 UTC. Las fechas anteriores son negativas. Casi todos los sistemas operativos y lenguajes de programación cuentan el tiempo a partir de ahí, y un conversor de epoch como este convierte ese número en una fecha legible y al revés.

¿Qué es el problema del año 2038?

Los programas que guardan el tiempo Unix en un entero de 32 bits con signo solo pueden contar hasta 2 147 483 647, que es el 19 de enero de 2038 a las 03:14:07 UTC. Un segundo después, el número da la vuelta a un valor negativo y se lee como diciembre de 1901. Los sistemas actuales de 64 bits usan un time_t de 64 bits y no se ven afectados, pero sí pueden estarlo los dispositivos embebidos antiguos, los formatos de archivo y las columnas de bases de datos que guardan segundos de 32 bits.

¿Mi timestamp está en segundos o en milisegundos?

Cuenta los dígitos. Una fecha actual en segundos tiene 10 dígitos (1700000000), y en milisegundos 13 (1700000000000). Date.now() de JavaScript y System.currentTimeMillis() de Java dan milisegundos; date +%s, time() de PHP e int(time.time()) de Python dan segundos. Si una fecha sale en 1970 o miles de años en el futuro, la unidad no es la correcta.

¿Los timestamps Unix tienen zona horaria?

No. Un timestamp es el mismo número en todo el mundo en el mismo instante; siempre cuenta desde la medianoche UTC del 1 de enero de 1970. La zona horaria solo importa cuando lo conviertes en una fecha del calendario y una hora del reloj, y por eso el conversor muestra el mismo timestamp en varias zonas.

¿El tiempo Unix cuenta los segundos intercalares?

No. El tiempo Unix trata cada día como de exactamente 86 400 segundos, así que los 27 segundos intercalares añadidos a UTC desde 1972 (el último a finales de 2016) no se cuentan. Para los registros y el uso cotidiano esto no importa.