Conversor de marca de tiempo Unix (Epoch ⇄ Fecha)
Datos de entrada
| Dirección de conversión | Epoch → Fecha |
|---|---|
| Marca de tiempo Unix | 1.784.550.784 |
| Unidad de la marca de tiempo | Segundos |
| Fecha | 20 jul 2026 |
Conversor de marca de tiempo Unix (Epoch ⇄ Fecha)
Convierta una marca de tiempo Unix (epoch) a fecha y hora UTC legible e ISO 8601, o transforme cualquier fecha del calendario a su valor epoch en segundos y milisegundos.
Datos de entrada
Datos de entrada
Resultados
Introduce un valor para ver los resultados.
Resultado
Marca de tiempo Unix (Epoch ⇄ Fecha)
Una marca de tiempo Unix es un número entero que cuenta los segundos transcurridos desde 1970-01-01 00:00:00 UTC. Los sistemas informáticos la emplean como representación compacta e inequívoca de cualquier instante en el tiempo, independiente de husos horarios o calendarios locales. Este conversor transforma valores epoch a fecha y hora UTC legibles, y viceversa.
Origen del epoch Unix
La fecha de referencia —1970-01-01 00:00:00 UTC— es una convención surgida durante el desarrollo del sistema operativo Unix en los Laboratorios Bell a finales de los años sesenta. El equipo necesitaba un punto de partida fijo para los cálculos de tiempo; la elección concreta fue arbitraria, pero su adopción por el estándar POSIX la extendió a prácticamente todos los sistemas operativos y lenguajes de programación en uso hoy en día.
Una marca de tiempo de 0 representa el propio instante epoch. Una marca de 86.400 equivale exactamente a un día después (60 s × 60 min × 24 h = 86.400 s). Los valores negativos representan instantes anteriores a 1970 y son perfectamente válidos en la mayoría de las implementaciones modernas.
Segundos y milisegundos
El estándar Unix original cuenta segundos enteros. La mayor parte del ecosistema Unix —ficheros de registro de servidor, registros de base de datos, utilidades de shell— emplea aún esta precisión de un segundo, produciendo valores de 10 dígitos para fechas del siglo XXI.
JavaScript introdujo una variante en milisegundos: Date.now() y Date.getTime() devuelven el número de milisegundos transcurridos desde el epoch, generando valores de 13 dígitos. Muchas API REST, flujos de eventos y bases de datos orientadas a JavaScript siguen esta misma convención.
Como norma general: un valor de 10 dígitos corresponde casi con certeza a segundos; uno de 13 dígitos, a milisegundos. Para convertir milisegundos a segundos basta dividir entre 1.000; este conversor realiza esa operación automáticamente al seleccionar la unidad de milisegundos.
Cómo se realiza la conversión
De epoch a fecha. Dado un valor en segundos, la fecha y hora UTC se obtiene mediante:
dıˊashora del dıˊa=⌊86400t⌋=tmod86400El número de días se proyecta sobre el calendario gregoriano proléptico teniendo en cuenta los años bisiestos. La hora del día se descompone en horas, minutos y segundos mediante divisiones modulares sucesivas.
De fecha a epoch. Dada una fecha del calendario a medianoche UTC, el epoch se calcula contando los días transcurridos desde 1970-01-01 y multiplicando por 86.400. Para la fecha 2024-01-01, el recuento es de 19.723 días, lo que da:
El conversor aplica aritmética de calendario gregoriano para gestionar con precisión los años bisiestos y los casos límite del calendario.
El problema del año 2038
Muchos sistemas heredados almacenan las marcas de tiempo Unix como un entero de 32 bits con signo. El valor máximo de este tipo es 2.147.483.647, que corresponde a 2038-01-19 03:14:07 UTC. Cuando el contador supere ese valor, desbordará al número negativo más grande del rango, y esos sistemas interpretarán la fecha como 1901-12-13.
Los sistemas de 64 bits no están afectados. Un entero de 64 bits con signo puede representar marcas de tiempo de aproximadamente 292.000 millones de años en el futuro, muy por encima de cualquier necesidad práctica. El problema del año 2038 es, por tanto, una cuestión de software heredado, no una limitación inherente al concepto de epoch Unix. La mayoría de los sistemas operativos principales, bases de datos y lenguajes de programación ya habían migrado a almacenamiento de tiempo de 64 bits antes de 2020.
Aspectos a tener en cuenta
Husos horarios. Una marca de tiempo Unix siempre cuenta segundos desde la medianoche UTC del 1 de enero de 1970. No incorpora información de huso horario. Al convertir una hora local a epoch es necesario transformarla primero a UTC. Este conversor utiliza medianoche UTC para entradas de solo fecha, que es la interpretación estándar.
Segundos intercalares. El epoch Unix no contempla los segundos intercalares: asume exactamente 86.400 segundos en cada día. Por ello, las marcas de tiempo Unix no son estrictamente equivalentes al Tiempo Atómico Internacional (TAI) ni al recuento de segundos que mantienen los organismos de referencia de tiempo de precisión. Para la gran mayoría de aplicaciones de software esta discrepancia —37 segundos acumulados hasta 2024— es irrelevante.
Desbordamiento en código heredado. Aunque el sistema operativo anfitrión use tiempo de 64 bits, las bibliotecas de terceros, los tipos de columna en bases de datos o los formatos de serialización pueden almacenar marcas de tiempo como enteros de 32 bits. Al leer o escribir en sistemas externos, conviene verificar el tamaño de almacenamiento si la precisión en torno a 2038 o más allá es relevante.
Preguntas frecuentes (FAQ)
¿Qué es una marca de tiempo Unix?
Una marca de tiempo Unix (también denominada tiempo POSIX o tiempo epoch) es un número entero que representa los segundos transcurridos desde el instante 1970-01-01 00:00:00 UTC. Esta fecha de referencia es una convención histórica del sistema operativo Unix, adoptada posteriormente por el estándar POSIX y extendida a prácticamente todos los sistemas operativos y lenguajes de programación actuales.
Al ser un número entero independiente de husos horarios y calendarios locales, la marca de tiempo Unix es el mecanismo estándar para almacenar y transmitir instantes de tiempo en sistemas informáticos. Para obtener una fecha legible es necesario aplicar el huso horario correspondiente; este conversor utiliza siempre el Tiempo Universal Coordinado (UTC).
¿Cómo sé si mi valor epoch está en segundos o en milisegundos?
El estándar Unix original cuenta segundos enteros. Un valor de 10 dígitos —por ejemplo, 1.700.000.000— corresponde casi con certeza a segundos (esa cifra equivale a una fecha de 2023). Un valor de 13 dígitos —por ejemplo, 1.700.000.000.000— corresponde casi con certeza a milisegundos, tal como los devuelven Date.now() y Date.getTime() de JavaScript, o muchas API REST y sistemas de registro.
Como norma general: diez dígitos indican segundos; trece dígitos indican milisegundos. Los valores de once o doce dígitos quedan fuera de estas referencias habituales y podrían representar microsegundos u otra escala no estándar; en ese caso conviene consultar la documentación de la fuente.
¿En qué consiste el problema del año 2038?
Muchos sistemas heredados almacenan las marcas de tiempo Unix como un entero de 32 bits con signo, que puede representar valores entre −2.147.483.648 y 2.147.483.647. El valor máximo positivo corresponde a la fecha 2038-01-19 03:14:07 UTC. A partir de ese momento, el contador desborda y regresa al valor negativo más grande, lo que estos sistemas interpretarían como una fecha de 1901.
Los sistemas modernos utilizan enteros de 64 bits, capaces de representar fechas varios cientos de miles de millones de años en el futuro. El problema del año 2038 afecta únicamente a sistemas embebidos heredados, bases de datos antiguas y software que no ha sido actualizado. La mayoría de los sistemas operativos y lenguajes de programación principales ya migraron a marcas de tiempo de 64 bits.
Recomendaciones
Calculadora de edad
Calcula la edad exacta en años, meses y días, y la cuenta atrás hasta el próximo cumpleaños, a partir de la fecha de nacimiento.