¿Qué es un conversor de timestamp Unix?
Un timestamp Unix (también conocido como tiempo epoch o «hora Unix») es el número de segundos transcurridos desde las 00:00:00 UTC del 1 de enero de 1970, sin contar los segundos intercalares. Esta herramienta transforma ese único número entero en una fecha y hora UTC legibles para cualquier persona, incluido el día de la semana.
Cómo usarlo
Pega o escribe un timestamp Unix en segundos (por ejemplo, 1700000000) y pulsa el botón. La calculadora te devuelve el año, el mes, el día, la hora, el minuto y el segundo en UTC, además del día de la semana y el número de días transcurridos desde el inicio del epoch.
La fórmula al detalle
Primero se separan los segundos: \(\text{días} = \left\lfloor \text{ts} / 86400 \right\rfloor\), y el resto nos da la hora del día.
$$\begin{gathered} \text{Days} = \left\lfloor \frac{\text{Timestamp}}{86400} \right\rfloor, \qquad s = \text{Timestamp} \bmod 86400 \\[1.5em] \text{where}\quad \left\{ \begin{aligned} \text{Hour} &= \left\lfloor \frac{s}{3600} \right\rfloor \\ \text{Minute} &= \left\lfloor \frac{s \bmod 3600}{60} \right\rfloor \\ \text{Second} &= s \bmod 60 \\ (\text{Y},\text{M},\text{D}) &= \text{civil}(\text{Days}) \end{aligned} \right. \end{gathered}$$Después, ese recuento de días se convierte en una fecha del calendario civil mediante el conocido algoritmo inverso «days_from_civil» de Howard Hinnant, que desplaza el inicio del año a marzo para que el día bisiesto quede al final del año y así evitar casos especiales. El día de la semana se obtiene con \((\text{días} + 4) \bmod 7\), ya que el 1 de enero de 1970 fue jueves.
Ejemplo resuelto
Para \(\text{ts} = 1{.}700{.}000{.}000\): \(\text{días} = 19675\) y \(\text{resto} = 72800\) segundos \(= 22{:}13{:}20\). El algoritmo de fecha civil convierte el día 19675 en 2023-11-14. Por tanto, el resultado es 2023-11-14 22:13:20 UTC.
Preguntas frecuentes
¿Tiene en cuenta las zonas horarias? No: el resultado siempre se expresa en UTC. Suma tu desfase horario local respecto a UTC para obtener la hora local.
¿Y los milisegundos? Introduce solo segundos. Si tienes un timestamp en milisegundos, divídelo primero entre 1000.
¿Por qué no contempla los segundos intercalares? Por definición, el propio tiempo Unix ignora los segundos intercalares, así que este conversor tampoco los considera.