Si alguna vez consultó una base de datos o trabajó con una API moderna, probablemente haya visto fechas devueltas no como "12 de octubre de 2026", sino como una cadena masiva e intimidante de números como 1791800000. Esta es una marca de tiempo Unix y es la columna vertebral universal del cronometraje en informática.
Manejar fechas y horas en la programación es notoriamente difícil. Las zonas horarias cambian, el horario de verano comienza y termina de manera impredecible y los años bisiestos introducen días adicionales. Para resolver esta caótica realidad, los ingenieros que construyeron el sistema operativo Unix decidieron inventar su propia línea de tiempo absoluta.
El origen: 1 de enero de 1970
Una marca de tiempo Unix es simplemente el número de segundos que han transcurrido desde el 1 de enero de 1970 a las 00:00:00 UTC. Este momento exacto de la historia se conoce como la "Epoca Unix".
¿Por qué 1970? Porque a principios de los años 1970, el almacenamiento era increíblemente caro. Almacenar una fecha como una cadena legible por humanos como "1970-01-01 00:00:00" ocupa casi 20 bytes de memoria. Almacenarlo como un único entero de 32 bits tomó solo 4 bytes. Al establecer el punto de partida cerca del momento en que se inventó Unix, maximizaron la cantidad de tiempo futuro que podrían almacenar dentro de esos 4 bytes.
Por qué las desarrolladoras aman las marcas de tiempo Unix
La razón principal por la que la hora Unix se adopta universalmente en API, bases de datos y microservicios es que no tiene zona horaria. Representa un momento único y absoluto en el tiempo a nivel mundial.
Si guarda un evento en una base de datos usando la hora del servidor local ("03:00 PM EST") y luego migra su servidor a Londres, todos sus cálculos se rompen. Pero si un evento ocurre en la marca de tiempo 1700000000, ese número es idéntico ya sea que el usuario que lo consulta esté en Tokio, Nueva York o París. La aplicación frontend simplemente toma ese número entero y lo convierte matemáticamente a la zona horaria local del usuario en su pantalla.
Convierta marcas de tiempo al instante
No intentes calcular los segundos mentalmente. Utilice nuestra herramienta fuera de línea para traducir instantáneamente marcas de tiempo de 10 o 13 dígitos a fechas legibles por humanos en su zona horaria local.
Abrir convertidor de marca de tiempoSegundos frente a milisegundos (la regla de los 10 frente a los 13 dígitos)
Uno de los errores más comunes en el desarrollo web es pasar una marca de tiempo a una función y obtener una fecha del año 1970 o del año 52.000. Esto sucede debido a una confusión entre segundos y milisegundos.
- Tiempo estándar de Unix (segundos): un número de 10 dígitos (por ejemplo,
1700000000). Este es el estándar en Linux, PHP y la mayoría de las bases de datos backend como MySQL. - Tiempo de JavaScript (milisegundos): un número de 13 dígitos (por ejemplo,
1700000000000). La funciónDate.now()de JavaScript incluye milisegundos para una mayor precisión.
Si introduce una marca de tiempo de backend de 10 dígitos en JavaScript sin multiplicarla por 1000, JavaScript asume que está hablando de los primeros días de enero de 1970.
// Correctly handling a Unix timestamp in JavaScript
const backendTimestamp = 1700000000;
const dateObject = new Date(backendTimestamp * 1000);
console.log(dateObject.toLocaleDateString()); // Converts to local user timezone
El problema del año 2038 (Y2K38)
La época de Unix tiene una fecha límite inminente. Debido a que originalmente se almacenó como un entero de 32 bits con signo, el número máximo que puede contener es 2,147,483,647.
El 19 de enero de 2038, a las 03:14:07 UTC, el reloj Unix alcanzará ese número máximo. Un segundo después, el número entero se desbordará y pasará a ser un número negativo. Los sistemas heredados que no se han actualizado a una arquitectura de 64 bits creerán de repente que estamos en el año 1901, lo que provocará fallos catastróficos en el software en todo el mundo.
Afortunadamente, casi todo el hardware, las bases de datos y los lenguajes de programación modernos (como los kernels de Linux de 64 bits y los modernos Node.js) ya han hecho la transición al tiempo de 64 bits, empujando el próximo desbordamiento miles de millones de años hacia el futuro.
Preguntas frecuentes (FAQ)
¿El tiempo de Unix tiene en cuenta los segundos intercalares?
Sorprendentemente, no. El tiempo Unix supone que cada día tiene exactamente 86.400 segundos. Cuando el mundo agrega un "segundo bisiesto" para adaptarse a la rotación de la Tierra, los sistemas Unix normalmente simplemente repiten la misma marca de tiempo dos veces para permanecer sincronizados sin interrumpir los cálculos matemáticos.
¿Puede una marca de tiempo de Unix ser negativa?
Sí. Cualquier marca de tiempo menor que 0 representa una fecha anterior a la época Unix (1 de enero de 1970). Por ejemplo, -86400 representa exactamente el 31 de diciembre de 1969.
¿Por qué mi fecha de conversión siempre aparece como 1970?
Probablemente esté pasando una marca de tiempo de 10 dígitos a una función que espera 13 dígitos (milisegundos). Multiplique su marca de tiempo por 1000 antes de convertirla.