Unix timestamp a fecha y hora – convertidor de marca de tiempo epoch

Última revisión del contenido:

Pega una marca de tiempo Unix y lee la fecha y la hora. El valor 1700000000 corresponde al 14 de noviembre de 2023, 22:13:20 UTC. El convertidor reconoce segundos, milisegundos, microsegundos y nanosegundos por sus cifras, y la opción Hora local muestra la hora de tu dispositivo.

Puedes escribir segundos, milisegundos, microsegundos o nanosegundos. La unidad se reconoce por el número de cifras.

UTC
Zona horaria

Con UTC la hora aparece sin desfase, tal como la guardan los registros y las bases de datos. Con la hora local aparece en la zona horaria de tu dispositivo, junto con el desfase.

a

¿Qué es un Unix timestamp o marca de tiempo Unix?

Un Unix timestamp, en español marca de tiempo Unix o tiempo Unix, es la cantidad de segundos transcurridos desde la medianoche UTC del 1 de enero de 1970[1]. Ese instante se llama época Unix y tiene el valor 0. UTC es el tiempo universal coordinado, la referencia a partir de la cual se cuentan las zonas horarias del mundo.

La forma de contar la fija POSIX, el estándar común de los sistemas tipo Unix. En él cada día tiene exactamente 86 400 segundos[2]. Los segundos intercalares que se añaden a UTC no tienen número propio en esta cuenta[1].

La marca de tiempo no contiene información sobre la zona horaria[3]. El número 1700000000 describe el mismo instante en Madrid y en Ciudad de México. Lo único que cambia es la hora que marcan los relojes de las dos ciudades en ese instante.

Cinco relojes de pared con los nombres Sídney, Londres, Monterrey, Vancouver y New York
Los relojes de cinco ciudades marcan cinco horas distintas. Una sola marca de tiempo Unix describe el mismo instante en las cinco esferas, y solo cambia la hora que se lee en cada zona. Foto: Luis Cortes, Unsplash.

¿Qué fecha corresponde a un Unix timestamp?

El Unix timestamp 1700000000 corresponde al 14 de noviembre de 2023 a las 22:13:20 UTC. En la España peninsular eran las 23:13:20, porque en noviembre rige la hora UTC+1[4]. En Ciudad de México eran las 16:13:20, ya que la Zona Centro usa UTC-6[5].

Pega cualquier marca de tiempo en el campo Marca de tiempo Unix y la fecha aparece en el campo Fecha y hora mientras escribes. Bajo el resultado, el convertidor indica en qué unidad ha leído el número.

Reconoce la unidad por el número de cifras. Una marca de tiempo actual en segundos tiene diez cifras. Un valor de JavaScript tiene trece, porque Date.now() devuelve milisegundos[6]. El resultado de time.time_ns() en Python tiene diecinueve cifras, porque esa función cuenta nanosegundos[7].

La opción Hora local del selector Zona horaria muestra la hora de tu dispositivo con el desfase de su zona.

Para calcular la marca de tiempo de una fecha, usa el convertidor de fecha a Unix timestamp.

¿Cómo se convierte un Unix timestamp en fecha? Fórmula y ejemplo

En el tiempo Unix cada día tiene exactamente 86 400 segundos[2]. Para convertir una marca de tiempo en fecha, divídela entre 86 400. La parte entera del resultado es el número de días completos desde el 1 de enero de 1970. El resto de la división es la hora de ese día expresada en segundos.

Toma la marca de tiempo 1700000000. Al dividirla entre 86 400 salen 19 675 días completos. El resto es de 80 000 segundos.

Si el 1 de enero de 1970 cuenta como día cero, el día 19 675 es el 14 de noviembre de 2023. El resto es la hora de ese día: 80 000 segundos son 22 horas, 13 minutos y 20 segundos. El resultado completo es 2023-11-14 22:13:20 UTC.

Una marca de tiempo en milisegundos se divide primero entre 1000, una en microsegundos entre un millón y una en nanosegundos entre mil millones. El convertidor de arriba hace esa división por sí solo antes de calcular la fecha. El cálculo inverso, de una fecha a un número de segundos, lo hace el convertidor de fecha a Unix timestamp.

Una marca de tiempo escrita en hexadecimal, como 6553F100, conviértela primero a decimal. Lo hace el convertidor de decimal a hexadecimal después de pulsar Cambiar orden. El valor 6553F100 es 1700000000 en decimal.

¿Qué fechas corresponden a las marcas de tiempo Unix redondas?

Hemos reunido marcas de tiempo redondas y límite: la época, los días que la rodean, cada cien millones de segundos más, la marca con las cifras del 1 al 0 en orden y los límites de un entero de 32 bits. Todas las fechas están en UTC, tal como las muestra el convertidor con la opción UTC.
Marca de tiempoFecha y hora en UTCQué marca este valor
-21474836481901-12-13 20:45:52Menor entero de 32 bits con signo
-864001969-12-31 00:00:00Un día antes de la época
-11969-12-31 23:59:59Último segundo antes de la época
01970-01-01 00:00:00Época Unix
864001970-01-02 00:00:00Fin del primer día
10000000002001-09-09 01:46:40Mil millones de segundos
12345678902009-02-13 23:31:30Cifras del 1 al 0 en orden
15000000002017-07-14 02:40:001500 millones de segundos
16000000002020-09-13 12:26:401600 millones de segundos
17000000002023-11-14 22:13:201700 millones de segundos
17356896002025-01-01 00:00:00Inicio de 2025
17672256002026-01-01 00:00:00Inicio de 2026
18000000002027-01-15 08:00:001800 millones de segundos
20000000002033-05-18 03:33:202000 millones de segundos
21474836472038-01-19 03:14:07Mayor entero de 32 bits con signo
41024448002100-01-01 00:00:00Inicio de 2100
42949672952106-02-07 06:28:15Mayor entero de 32 bits sin signo
El tiempo Unix alcanzó el valor 1234567890, con las cifras del 1 al 0 en orden, el viernes 13 de febrero de 2009 a las 23:31:30 UTC[1]. En la España peninsular ya era 14 de febrero. Un contador guardado como entero de 32 bits con signo se desborda después del valor 2147483647. Su valor pasa entonces a -2147483648, que corresponde al 13 de diciembre de 1901[8]. En binario, 2147483647 son 31 unos. Así lo muestra el convertidor de decimal a binario.

¿Cómo saber si una marca de tiempo está en segundos, milisegundos o nanosegundos?

La unidad se reconoce por el número de cifras. Toda marca de tiempo entre el 9 de septiembre de 2001 y el 20 de noviembre de 2286 tiene diez cifras en segundos. Por eso, para las fechas actuales, la longitud en cada unidad no cambia.
UnidadCifras hoyEl instante 1700000000 en esta unidadDónde la encuentras
Segundos101700000000time() de PHP, campo exp de un JWT, marcas de tiempo en Discord
Milisegundos131700000000000Date.now() de JavaScript, EPOCHTODATE con la unidad 2
Microsegundos161700000000000000EPOCHTODATE con la unidad 3
Nanosegundos191700000000000000000time.time_ns() de Python
La función time() de PHP devuelve el número de segundos desde la época[3]. Los campos exp, nbf e iat de un JWT contienen un número de segundos que puede tener parte decimal[9]. Discord espera la marca de tiempo en segundos[10]. Date.now() devuelve milisegundos[6], y time.time_ns() de Python devuelve nanosegundos[7]. La función EPOCHTODATE de Hojas de cálculo de Google acepta la unidad 1 para segundos, 2 para milisegundos y 3 para microsegundos[11].

¿Con qué fórmula o comando se convierte un Unix timestamp en fecha?

Cada fila convierte la marca de tiempo 1700000000 en el 14 de noviembre de 2023, 22:13:20 UTC. Hemos comprobado con esta marca los resultados del comando date, de Python y de JavaScript.
DóndeFórmula o comandoResultado para 1700000000
Excel=A1/86400+FECHA(1970;1;1)2023-11-14 22:13:20 al dar a la celda un formato de fecha y hora
Excel, marca de tiempo en milisegundos=A1/86400000+FECHA(1970;1;1)La misma fecha para el valor 1700000000000
Hojas de cálculo de Google=EPOCHTODATE(A1)Fecha y hora en UTC
Hojas de cálculo de Google, milisegundos=EPOCHTODATE(A1; 2)Fecha y hora en UTC para el valor 1700000000000
MySQLSELECT FROM_UNIXTIME(1700000000);2023-11-14 22:13:20 si la sesión tiene la zona UTC
PostgreSQLSELECT to_timestamp(1700000000);2023-11-14 22:13:20+00 si la sesión tiene la zona UTC
Pythondatetime.fromtimestamp(1700000000, tz=timezone.utc)2023-11-14 22:13:20+00:00
JavaScriptnew Date(1700000000 * 1000).toISOString()2023-11-14T22:13:20.000Z
Linux, comando datedate -u -d @1700000000Tue Nov 14 22:13:20 UTC 2023
PowerShell 7.1 y posterioresGet-Date -UnixTimeSeconds 1700000000 -AsUTCFecha y hora en UTC con el formato regional del sistema
MySQL devuelve el resultado de FROM_UNIXTIME en la zona horaria de la sesión, es decir, en la zona configurada para la conexión actual[12]. PostgreSQL convierte una marca de tiempo con la función to_timestamp al tipo timestamp with time zone[13]. PostgreSQL muestra los valores de ese tipo en la zona indicada en el parámetro TimeZone[14]. En Python, la fila necesita la importación from datetime import datetime, timezone. El método utcfromtimestamp está obsoleto desde la versión 3.12, y la documentación recomienda fromtimestamp con la zona UTC[15]. El comando date acepta la marca de tiempo precedida del signo @[16]. Get-Date tiene los parámetros -UnixTimeSeconds y -AsUTC desde PowerShell 7.1[17].

¿Cómo preparar la fórmula en Excel y Hojas de cálculo de Google para que muestre una fecha?

Para una sola marca de tiempo es más rápido el campo de arriba. Una columna entera de marcas de tiempo exportadas de una base de datos se convierte con una fórmula arrastrada hacia abajo.

  1. Excel: fórmula con la función FECHA

    Escribe la marca de tiempo en la celda A1 y la fórmula =A1/86400+FECHA(1970;1;1) en la celda B1. En Excel en español, la función FECHA tiene los argumentos año, mes y día[18]. La fórmula divide los segundos entre los segundos de un día y suma el resultado a la fecha 1 de enero de 1970.
  2. Excel: formato de fecha y hora en la celda

    Excel almacena las fechas como números de serie secuenciales, y el 1 de enero de 1900 es el número de serie 1[18]. Por eso la celda B1 muestra primero un número de días con decimales, unos 45244,93. En Formato de celdas, pestaña Número, elige la categoría Personalizada y escribe el formato aaaa-mm-dd hh:mm:ss. Verás 2023-11-14 22:13:20[19].
  3. Excel: libro con el sistema de fechas 1904

    Excel puede contar las fechas desde el 1 de enero de 1904, y la diferencia entre los dos sistemas de fechas es de 1 462 días[20]. En el sistema 1900, el 1 de enero de 1970 es el número 25569. En el sistema 1904, el mismo día es el número 24107. FECHA devuelve el número en el sistema de fechas del propio libro, así que la fórmula da la fecha correcta en los dos sistemas.
  4. Hojas de cálculo de Google: la función EPOCHTODATE

    En Hojas de cálculo de Google basta la fórmula =EPOCHTODATE(A1). Una marca de tiempo en milisegundos necesita el segundo argumento 2, y una en microsegundos el argumento 3. El resultado se muestra siempre en UTC, sea cual sea la zona horaria de la hoja[11].
  5. Hora de España o de México en la hoja

    Las dos fórmulas dan UTC. Para la hora de la España peninsular, suma 1/24 en invierno y 2/24 en verano[4]. En Canarias, que tiene una hora menos, suma 1/24 solo en verano[4]. Para Ciudad de México, resta 6/24, porque la Zona Centro usa UTC-6[5].

¿Por qué el convertidor muestra una hora distinta de la de tu reloj?

El convertidor muestra por defecto UTC, porque en esa escala se cuenta la propia marca de tiempo[1]. La hora oficial de la España peninsular es UTC+1 en invierno y UTC+2 en verano, y en Canarias es una hora menos[4]. El horario de verano empieza el último domingo de marzo y termina el último domingo de octubre[4].

En México ya no hay horario de verano[21]. La Zona Centro, que incluye Ciudad de México, usa UTC-6[5], y solo algunos municipios de la frontera norte siguen cambiando la hora[21].

Por eso la marca de tiempo 1700000000 da las 22:13:20 en UTC, las 23:13:20 en Madrid y las 16:13:20 en Ciudad de México. La marca 1782864000 es la medianoche UTC del 1 de julio de 2026. En Madrid son entonces las 2:00, y en Ciudad de México las 18:00 del 30 de junio.

Las bases de datos funcionan igual. MySQL muestra el resultado de FROM_UNIXTIME en la zona horaria de la sesión[12]. La misma marca leída con la sesión en UTC y con la sesión en Europe/Madrid da dos horas distintas.

La opción Hora local del selector Zona horaria muestra tu hora sin hacer cuentas, siempre que tu dispositivo tenga configurada la zona correcta. La marca de tiempo de una hora concreta la calculas en el convertidor de fecha a Unix timestamp.

Reloj digital sobre un escritorio junto a un teclado, marcando las 10:03
Un reloj de escritorio muestra la hora local. El convertidor muestra UTC por defecto, y la opción Hora local te da la hora que marca un reloj como este. Foto: Andrei Anufrienko, Unsplash.

Fuentes

  1. Tiempo Unix — Wikipedia
  2. The Open Group Base Specifications Issue 8 (POSIX.1-2024), 4.19 Seconds Since the Epoch — The Open Group
  3. time — PHP Manual — The PHP Group
  4. Sección de Hora — Real Instituto y Observatorio de la Armada
  5. Hora Oficial de los Estados Unidos Mexicanos — Centro Nacional de Metrología (CENAM)
  6. Date.now() — MDN Web Docs
  7. time — Time access and conversions — Python Software Foundation
  8. Year 2038 problem — Wikipedia (inglés)
  9. RFC 7519: JSON Web Token (JWT) — IETF
  10. Reference — Message Formatting — Discord Developer Documentation
  11. Función EPOCHTODATE — Ayuda de Editores de Documentos de Google
  12. MySQL 8.4 Reference Manual, Date and Time Functions — Oracle
  13. PostgreSQL Documentation, Date/Time Functions and Operators — PostgreSQL Global Development Group
  14. PostgreSQL Documentation, Date/Time Types — PostgreSQL Global Development Group
  15. datetime — Basic date and time types — Python Software Foundation
  16. GNU Coreutils, Seconds since the Epoch — Free Software Foundation
  17. Get-Date (Microsoft.PowerShell.Utility) — Microsoft Learn
  18. Función FECHA — Microsoft Support
  19. Aplicar formato a una fecha como quiera en Excel — Microsoft Support
  20. Sistemas de fechas en Excel — Microsoft Support
  21. Ya no hay Horario de Verano en la República Mexicana — Secretaría de Energía

Todos los valores de las tablas se calcularon a partir de las definiciones de las unidades y se comprobaron aritméticamente antes de publicarlos. Los datos históricos y los nombres de las unidades locales proceden de las fuentes indicadas arriba.

Última revisión del contenido: · redactado y verificado por el equipo de Arteon

Preguntas frecuentes sobre el Unix timestamp

¿Cuál es el Unix timestamp actual?

La marca de tiempo actual aumenta en uno cada segundo. En septiembre de 2026 está entre 1788220800 y 1790812799. El valor exacto lo devuelve en la consola del navegador la expresión Math.floor(Date.now() / 1000), porque Date.now() devuelve milisegundos[6]. La marca de una fecha concreta la calculas en el convertidor de fecha a Unix timestamp.

¿Qué significa el campo exp de un JWT?

El campo exp indica el momento a partir del cual el token no debe aceptarse. Su valor es el número de segundos desde el 1 de enero de 1970 UTC, sin contar los segundos intercalares[9]. Pégalo en el convertidor y verás la fecha y la hora en que caduca el token. Con el mismo formato se escriben el campo iat, el momento en que se emitió el token, y el campo nbf, el momento antes del cual el token no debe aceptarse[9].

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

Una marca de tiempo guardada como entero de 32 bits con signo alcanza su valor máximo el martes 19 de enero de 2038[1], a las 03:14:07 UTC[8]. Ese valor, 2147483647, es 7FFFFFFF en el convertidor de decimal a hexadecimal. Un segundo después, el contador se desborda y muestra el 13 de diciembre de 1901[8]. El núcleo Linux admite desde la versión 5.6, publicada en 2020, tiempo de 64 bits también en arquitecturas de 32 bits[8].

¿Puede ser negativo un Unix timestamp?

Sí. Los valores negativos corresponden a instantes anteriores al 1 de enero de 1970[13]. La marca -86400 es el 31 de diciembre de 1969 a las 00:00:00 UTC. El convertidor acepta el signo menos delante del número.

¿Cómo trata el tiempo Unix los segundos intercalares?

En el tiempo Unix cada día tiene exactamente 86 400 segundos[2], así que un segundo intercalar no tiene número propio. La documentación de GNU pone un ejemplo de finales de 2016. La marca 1483228799 es el 31 de diciembre a las 23:59:59 UTC, y la marca 1483228800 ya es la medianoche del 1 de enero de 2017. El segundo 23:59:60 no se puede escribir como marca de tiempo[16].

¿Cómo muestro un Unix timestamp en un mensaje de Discord?

Escribe <t:1700000000> en el mensaje. Discord muestra ese instante en la zona horaria y el formato de cada persona que lo lee. El estilo se añade después de un segundo signo de dos puntos: <t:1700000000:R> muestra el tiempo relativo y <t:1700000000:F> la fecha completa con el día de la semana[10].

¿Por qué Python declaró obsoleto utcfromtimestamp?

El método datetime.utcfromtimestamp() está obsoleto desde Python 3.12. Devuelve un objeto sin zona horaria, y muchos métodos del módulo datetime tratan ese objeto como hora local. La documentación recomienda usar en su lugar datetime.fromtimestamp(marca, tz=timezone.utc)[15].

¿Acepta el campo puntos, espacios y valores en milisegundos?

Sí. Puedes separar las cifras de tres en tres con puntos, espacios, guiones bajos o apóstrofos, como en «1.700.000.000» o «1 700 000 000». Una sola coma o un solo punto separan la fracción de segundo, como en 1700000000,5. Los milisegundos, microsegundos y nanosegundos el convertidor los reconoce por el número de cifras.

¿Cómo convierto una fecha de nuevo en Unix timestamp?

Pulsa Cambiar orden. Se abrirá el convertidor de fecha a Unix timestamp con el resultado del campo Fecha y hora ya escrito. Allí escribes la fecha como 2023-11-14 22:13:20 o 14.11.2023 22:13.

Captura de pantalla de la herramienta gratuita de Arteon: Unix timestamp a fecha y hora – convertidor de marca de tiempo epoch

Ayúdanos a mejorar nuestras herramientas

¿Tienes una idea, encontraste un error o quieres sugerir una función? Escríbenos.