¿Qué es el tiempo UNIX?
El tiempo UNIX (también conocido como timestamp UNIX o tiempo POSIX) es el número de segundos transcurridos desde la época UNIX, es decir, desde el 1970-01-01 00:00:00 UTC. Se trata de una forma universal e independiente del idioma de representar un instante concreto como un único número entero, y se utiliza en todo el mundo de la informática: registros (logs), bases de datos, APIs y programación. No se aplican segundos intercalares, de modo que cada día se considera exactamente como 86 400 segundos.
Cómo usar esta calculadora
Introduce la fecha del calendario (año, mes y día) y la hora (hora, minuto y segundo) tal como aparecerían en un reloj local. Después, ajusta la «Diferencia horaria respecto a UTC» con el desfase de esa zona horaria expresado en horas. Por ejemplo, Japón es +9, la India es +5,5 y la hora estándar del Pacífico de EE. UU. es -8. El valor predeterminado es +9 (hora de Japón). Si dejas la hora, el minuto y el segundo en blanco, se tomarán como cero.
La fórmula explicada
Primero, la fecha se convierte en un recuento de días mediante el algoritmo «days-from-civil» (de Howard Hinnant), que cuenta correctamente los días desde la época para cualquier fecha del calendario gregoriano, incluidos los años bisiestos y las fechas anteriores a 1970. Ese recuento de días se multiplica por 86 400 y se le suman las horas, los minutos y los segundos para obtener los segundos transcurridos desde el 1970-01-01 00:00:00 en hora local. Por último, se resta el desfase UTC (en horas × 3600) para trasladar el resultado a UTC.
$$\begin{gathered} t = 86400 \cdot D + 3600\,\text{Hour} + 60\,\text{Minute} + \text{Second} - 3600\,\text{UTC Offset} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} D &= \text{days from } 1970\text{-}01\text{-}01 \text{ to the chosen date} \\ \text{date} &= \left(\text{Year},\ \text{Month},\ \text{Day}\right) \end{aligned} \right. \end{gathered}$$
Ejemplo resuelto
Para el 2025-06-15 00:00:00 con un desfase de +9: daysSinceEpoch = 20254, por lo que localSeconds = \(20254 \times 86400 = 1\,749\,945\,600\). Al restar \(9 \times 3600 = 32\,400\) obtenemos un tiempo UNIX de 1 749 913 200, que corresponde al 2025-06-14 15:00:00 UTC.
Preguntas frecuentes
¿Por qué el timestamp es menor de lo que esperaba con un desfase positivo? Porque una hora local que va por delante de UTC corresponde a un instante UTC anterior, así que su valor UNIX es más bajo que el de ese mismo reloj interpretado como UTC.
¿Funciona con fechas anteriores a 1970? Sí: en ese caso el resultado es simplemente negativo. El 1969-12-31 23:59:59 UTC equivale a -1.
¿Incluye los segundos intercalares? No. Sigue la definición estándar de POSIX, según la cual cada día tiene exactamente 86 400 segundos.