Epoch Converter: epoch a fecha y fecha a epoch
Pegue cualquier timestamp o fecha y véalo en palabras, en su zona horaria y en UTC, con todo lo demás que podría ser el número.
Un número · todos los epochs
7 lecturas caen en una fecha realLectura: Segundos Unix, por su longitud (9 dígitos). Con la lectura Segundos GPS sería el 6 de diciembre de 2005: también una fecha real, así que queda a un clic.
- Milisegundos
- Microsegundos
- Nanosegundos
- ISO 8601
El reloj de su navegador cuenta milisegundos enteros: los ceros que siguen son relleno, no precisión.
UTC · UTC+00:00 en esta fecha
1793813880- Milisegundos
1793813880000- ISO 8601
2026-11-04T17:38:00Z
Inicio y fin en UTC
| Inicio | Fin | |
|---|---|---|
| Día | 1793750400 | 1793836799 |
| Mes | 1793491200 | 1796083199 |
| Año | 1767225600 | 1798761599 |
Todo ocurre en esta pestaña: nada de lo que pega se envía a ninguna parte.
Cómo usar este conversor Unix de epoch a fecha
Pegue en el campo el timestamp que tenga, en la unidad que sea, y la fecha aparece en su propia zona horaria y en UTC. También puede escribir una fecha, el encabezado Date de un correo o la palabra ahora para obtener su tiempo epoch.
La página lee un número a la vez en segundos, milisegundos, microsegundos y nanosegundos, elige la lectura que cae en una fecha real, dice por qué y deja las demás lecturas a un clic. Debajo de la respuesta, los mismos dígitos se leen como un timestamp de Windows, .NET, Mac, Excel, NTP y GPS, y cada formato se puede copiar.

Pegue lo que seaUn número en cualquier unidad, una fecha ISO, el encabezado Date de un correo, un datetime SQL o la palabra ahora. La etiqueta indica cómo se leyó.Los dígitos, contadosLa regla bajo el número agrupa sus dígitos de tres en tres, así que 18 dígitos se leen como seis grupos: la primera pista de lo que es.Primero, la respuestaEl día de la semana y la fecha en palabras, luego la hora en UTC y en su propia zona horaria, y cada formato para copiar.Qué lectura, y por quéLa página dice en palabras qué lectura eligió y por qué, y nombra la otra lectura que también cae en una fecha real.Todos los demás epochsLos mismos dígitos leídos en cada unidad y cada epoch, cada uno como una barra desde su propio inicio. Elija una fila para usar esa lectura.¿Qué es el tiempo epoch (tiempo Unix) y por qué empieza en 1970?
El tiempo epoch, o tiempo Unix, es el número de segundos transcurridos desde 1970-01-01 00:00:00 UTC, el momento que POSIX llama el Epoch. El timestamp 0 es ese momento, y la fecha epoch 817876800 es 1995-12-02 04:00 UTC.
Ninguna fuente primaria registra por qué se eligió 1970. El primer manual de Unix, en noviembre de 1971, contaba sexagésimos de segundo desde el 1 de enero de 1971 y advertía que su reloj se agotaría en unos dos años y medio; para la séptima edición, en 1979, la cuenta era de segundos desde el 1 de enero de 1970, una fecha redonda cercana a cuando se estaba escribiendo Unix. El propio UTC no comenzó hasta 1972, así que los timestamps anteriores son UTC por convención.
se llenó el 8 de abril de 1973 · 2,27 años
1901-12-13 → 2038-01-1968 años en cada sentido
valores negativos: antes de 1970
UNIX Programmer's Manual, primera edición, time (II), 3 de noviembre de 1971
El usuario de mentalidad--cronológica notará que 2**32 sexagésimos de segundo son solo unos 2,5 años.
Todos los epochs que lee esta página, en una sola línea
- 1
.NET
0001-01-01· ticks de 100 ns - 2
Windows FILETIME
1601-01-01· ticks de 100 ns - 3
Excel
1899-12-30· días - 4NTP
1900-01-01· segundos - 5
Mac HFS+
1904-01-01· segundos - 6
Excel 1904
1904-01-01· días - 7Unix
1970-01-01· segundos - 8GPS
1980-01-06· segundos
¿Mi timestamp está en segundos, milisegundos, microsegundos o nanosegundos?
Cuente los dígitos: un timestamp actual tiene 10 dígitos en segundos, 13 en milisegundos, 16 en microsegundos y 19 en nanosegundos. JavaScript y Java usan milisegundos; las herramientas Unix y la mayoría de las API, segundos.
La cantidad de dígitos es una pista fuerte, no una prueba. Los timestamps de NTP, GPS y Mac también tienen diez dígitos hoy, y un Windows FILETIME y una cuenta de ticks de .NET tienen dieciocho, por eso esta página lee todas las escalas a la vez y muestra la lectura que eligió junto a las demás. Además, un FILETIME es más grande de lo que JavaScript puede guardar con exactitud, así que la página conserva los dígitos tal como los pegó.
10 dígitos · 4 escalas · los dígitos por sí solos no dicen cuál
18 dígitos · 2 escalas · solo el primer dígito las distingue
Los segundos de 10 dígitos van de 2001-09-09T01:46:40Z a 2286-11-20T17:46:39Z. Es un intervalo de 285 años, no una unidad.
¿Cómo convierto un timestamp Unix a una fecha en mi zona horaria?
Un timestamp Unix no tiene zona horaria: nombra un mismo instante en todas partes. La fecha depende de dónde se lea, así que la página muestra su propia zona y UTC lado a lado, y cualquier otra zona que elija.
El selector de zonas usa la base de datos de zonas horarias de IANA, la misma que usa su sistema operativo, así que los cambios de horario de verano se aplican para la fecha en sí, no para hoy. En sentido contrario, una fecha escrita sin desfase se lee como UTC, y la página ofrece leerla en su propia zona.
Un instante1793057400= 2026-10-26T23:30:00Z
- Los Ángeles16:30lun, 26 octUTC−07:00
- Nueva York19:30lun, 26 octUTC−04:00
- UTC23:30lun, 26 octUTC+00:00
- Berlín00:30mar, 27 octUTC+01:00
- Calcuta05:00mar, 27 octUTC+05:30
- Tokio08:30mar, 27 octUTC+09:00
- Lord Howe10:30mar, 27 octUTC+11:00
Berlín, 29 de marzo de 202623 horas · los relojes saltaron de 02:00 a 03:00
Berlín, 25 de octubre de 202625 horas · los relojes retrocedieron de 03:00 a 02:00
hora estándar de Europa central · UTC+01:00hora de verano de Europa central · UTC+02:00la hora que ocurrió dos vecesla hora que nunca ocurrió
¿Qué le pasa al tiempo Unix en 2038?
Un tiempo Unix guardado como entero de 32 bits con signo se agota en 2147483647, que es 2038-01-19 03:14:07 UTC; un segundo después salta a una fecha de diciembre de 1901. Los sistemas que cuentan en 64 bits, como ahora exige POSIX, no se ven afectados.
En 2026 el riesgo está en el almacenamiento, no en los relojes: una columna TIMESTAMP de MySQL todavía termina en 2038-01-19 03:14:07 UTC, igual que cualquier formato de archivo o dispositivo embebido que haya conservado un campo de 32 bits. NTP tiene su propio desbordamiento, anterior: sus segundos de 32 bits vuelven a cero en 2036. La página marca cualquier timestamp cercano al límite de 2038 o más allá.
2.147.483.647el mayor número de 32 bits con signo
01111111 11111111 11111111 11111111mar, 19 ene 203803:14:07 UTC
+ 1 segundo
-2.147.483.648los mismos 32 bits, leídos como número con signo
10000000 00000000 00000000 00000000vie, 13 dic 190120:45:52 UTC
Último segundo, UTC
time_t de 32 bits con signo2038-01-19 03:14:07TIMESTAMP de MySQL2038-01-19 03:14:07hoy2038-01-19
time_t de 64 bits, que exige POSIX.1-2024, llega a unos 292 mil millones de años antes y después de 1970. Fuente: POSIX.1-2024 A.4.19, MySQL 8.4, RFC 5905 §6, TN1150¿Puede un timestamp Unix ser negativo?
Sí: un timestamp negativo es una fecha anterior a 1970. -1 es 1969-12-31 23:59:59 UTC, y -86400 es 1969-12-31 00:00:00 UTC.
El propio POSIX deja sin definir los valores negativos, pero GNU y la mayoría de los sistemas los tratan como fechas anteriores a 1970 mediante una extensión documentada, al igual que JavaScript, Python y PostgreSQL. MySQL es la excepción: su columna TIMESTAMP empieza en 1970, y FROM_UNIXTIME(-1) devuelve NULL. Las fechas de nacimiento y los registros históricos son timestamps negativos comunes, así que la página los lee como fechas en lugar de tratarlos como un error.
SegundosCuánto hacia atrás (escala log.)Fecha, UTC
0jue, 1 ene 197000:00:00 UTC-1mié, 31 dic 196923:59:59 UTC-86.400mié, 31 dic 196900:00:00 UTC-31.536.000mié, 1 ene 196900:00:00 UTC-1.000.000.000dom, 24 abr 193822:13:20 UTC-2.147.483.648vie, 13 dic 190120:45:52 UTC- POSIX
Si el año es <1970 o el valor es negativo, la relación no está definida.
GNU date
@-1es 1969-12-31 23:59:59 UTC: valores negativos, como extensión de POSIXJavaScriptcualquier fecha hasta unos 273.790 años antes o después de 1970
MySQL TIMESTAMPempieza en 1970-01-01 00:00:01 UTC: no puede guardar un valor negativo
Windows, .NET, Mac, Excel, NTP y GPS: los otros epochs
Muchos sistemas cuentan desde su propio cero: Windows desde 1601, .NET desde el año 1, Mac y HFS+ desde 1904, Excel desde 1900, NTP desde 1900 y GPS desde el 6 de enero de 1980. Un número que no tiene sentido como timestamp Unix suele ser uno de estos.
El FILETIME 133756272000000000, por ejemplo, cuenta intervalos de 100 nanosegundos desde 1601 y es 2024-11-09 12:00:00 UTC. Excel cuenta días y trata 1900 como año bisiesto a propósito, así que sus números de serie por debajo de 61 tienen un día de diferencia, y la página los marca. El tiempo GPS omite los segundos intercalares y va 18 segundos por delante de UTC desde 2017.
| Epoch | Cuenta | Desde | El 26 oct 2026 | Dígitos | Zona horaria | Dónde aparece |
|---|---|---|---|---|---|---|
| Segundos Unix | segundos | 1970-01-01 | 1792972800 | 10 | UTC (POSIX) | date +%s, time.time() en Python |
| milisegundos | 1970-01-01 | 1792972800000 | 13 | UTC | Date.now() en JavaScript, Java | |
| nanosegundos | 1970-01-01 | 1792972800000000000 | 19 | UTC | UnixNano() en Go | |
| ticks de 100 ns | 1601-01-01 | 134374464000000000 | 18 | UTC (hora local en FAT) | NTFS, lastLogon de Active Directory, Win32 | |
| ticks de 100 ns | 0001-01-01 | 639285696000000000 | 18 | UTC o local, según Kind | DateTime.Ticks | |
| días | 1899-12-30 | 46321 | 5 | ninguna: fecha y hora sin zona | Excel, Google Sheets, LibreOffice | |
| días | 1904-01-01 | 44859 | 5 | ninguna: fecha y hora sin zona | versiones antiguas de Excel para Mac | |
| segundos | 1904-01-01 | 3875817600 | 10 | GMT (HFS clásico: local) | fechas de archivos HFS+ | |
| Segundos NTP | segundos | 1900-01-01 | 4001961600 | 10 | UTC | paquetes NTP |
| Segundos GPS | segundos | 1980-01-06 | 1477008018 | 10 | sin segundos intercalares: UTC + 18s | receptores GPS, archivos RINEX |
¿El tiempo Unix cuenta los segundos intercalares?
No. El tiempo Unix da a cada día exactamente 86.400 segundos, así que un segundo intercalar no tiene número propio, y POSIX lo dice: el tiempo POSIX desglosado no es necesariamente UTC, a pesar de su apariencia.
Desde 1972 se han añadido 27 segundos intercalares a UTC; el tiempo Unix no tiene número para el segundo extra, así que un timestamp representa dos segundos. El último fue el 2016-12-31, y en 2022 la Conferencia General de Pesas y Medidas decidió que para 2035 se elevará el límite que los hace necesarios, lo que en la práctica les pone fin. El tiempo GPS, que nunca los tuvo, muestra la diferencia: va 18 segundos por delante.
Los últimos segundos del 31 de diciembre de 1998
El tiempo Unix da 915148800 dos veces; el tiempo GPS, que no tiene segundos intercalares, sigue contando.
27 segundos intercalaresninguno después del 31 de diciembre de 2016 · ninguno anunciado antes del 28 de junio de 2027
antes de que empezara el tiempo GPSdesde que empezó el tiempo GPS: cada uno lo adelantó un segundo más
POSIX.1-2024, Rationale A.4.19
El tiempo universal coordinado (UTC) incluye segundos intercalares. Sin embargo, en el tiempo POSIX (segundos desde el Epoch), los segundos intercalares se ignoran (no se aplican) para ofrecer un método fácil y compatible de calcular diferencias de tiempo. Por lo tanto, el tiempo POSIX desglosado no es necesariamente UTC, a pesar de su apariencia.
Timestamps Unix en Python, JavaScript, Java, C#, Go, SQL y la shell
Cada lenguaje convierte en ambos sentidos en una o dos líneas. Las trampas son la unidad (JavaScript y Java cuentan milisegundos) y la zona horaria (una base de datos puede leer el valor en la zona de su sesión).
Cada ejemplo de abajo convierte 817876800 en una fecha y una fecha de nuevo en segundos, y cada uno se ejecutó para comprobar su salida. En la shell, macOS y los BSD usan date -r 817876800, mientras que GNU/Linux usa date -d @817876800: no son intercambiables.
from datetime import datetime, timezone t = datetime.fromtimestamp(817876800, tz=timezone.utc) print(t.isoformat()) # 1995-12-02T04:00:00+00:00 back = datetime(1995, 12, 2, 4, 0, tzinfo=timezone.utc) print(int(back.timestamp())) # 817876800
Ejecutado con Python 3.14.4 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
const t = new Date(817876800 * 1000); // Date counts milliseconds console.log(t.toISOString()); // 1995-12-02T04:00:00.000Z const back = Date.UTC(1995, 11, 2, 4, 0, 0) / 1000; // months count from 0 console.log(back); // 817876800
Ejecutado con Node.js 22.23.2 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant t = Instant.ofEpochSecond(817876800L);
System.out.println(t); // 1995-12-02T04:00:00Z
long back = Instant.parse("1995-12-02T04:00:00Z").getEpochSecond();
System.out.println(back); // 817876800
}
}Ejecutado con OpenJDK 25.0.2 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
var t = DateTimeOffset.FromUnixTimeSeconds(817876800); Console.WriteLine(t.ToString("o")); // 1995-12-02T04:00:00.0000000+00:00 var back = new DateTimeOffset(1995, 12, 2, 4, 0, 0, TimeSpan.Zero).ToUnixTimeSeconds(); Console.WriteLine(back); // 817876800
Ejecutado con .NET 10.0.103 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
package main import ( "fmt" "time" ) func main() { t := time.Unix(817876800, 0).UTC() fmt.Println(t.Format(time.RFC3339)) // 1995-12-02T04:00:00Z back := time.Date(1995, 12, 2, 4, 0, 0, 0, time.UTC).Unix() fmt.Println(back) // 817876800 }
Ejecutado con Go 1.25.5 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
SET TIME ZONE 'UTC'; SELECT to_timestamp(817876800); -- 1995-12-02 04:00:00+00 SELECT EXTRACT(EPOCH FROM TIMESTAMPTZ '1995-12-02 04:00:00+00')::bigint; -- 817876800
Ejecutado con PostgreSQL 16.10 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
SET time_zone = '+00:00'; SELECT FROM_UNIXTIME(817876800); -- 1995-12-02 04:00:00 SELECT UNIX_TIMESTAMP('1995-12-02 04:00:00'); -- 817876800
Ejecutado con MySQL 9.5.0 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
# macOS and the BSDs: -r takes seconds date -u -r 817876800 '+%F %T' # 1995-12-02 04:00:00 date -u -j -f '%F %T' '1995-12-02 04:00:00' +%s # 817876800 # Linux (GNU coreutils): -d @seconds; GNU's -r reads a file's date date -u -d @817876800 '+%F %T' # 1995-12-02 04:00:00 date -u -d '1995-12-02 04:00:00' +%s # 817876800
Ejecutado con el comando date de macOS 26.6 y de GNU coreutils 9.12 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
Tiempo epoch: preguntas y respuestas
¿Qué es el tiempo epoch?
¿Cómo convertir epoch a fecha?
new Date(817876800 * 1000) en JavaScript.¿Cuál es el tiempo epoch actual?
date +%s lo muestra en segundos.¿Un timestamp Unix está en segundos o en milisegundos?
¿Por qué el tiempo Unix empieza en 1970?
¿El tiempo Unix es lo mismo que UTC?
¿Qué es el problema del año 2038?
TIMESTAMP de MySQL, por ejemplo, todavía termina en ese segundo.¿Puedo convertir una fecha anterior a 1970?
TIMESTAMP de MySQL no puede guardarlos, pero la mayoría de los lenguajes y bases de datos los leen como fechas anteriores a 1970.¿Cómo convertir un Windows FILETIME a fecha?
¿Cómo convertir un número de serie de Excel a timestamp?
¿El conversor maneja zonas horarias y horario de verano?
¿Se envía mi timestamp a algún lugar?
¿Le falta algo?Sugiera una función o una herramienta nueva
Herramientas relacionadas
Generador de UUID
Genera UUID v4, v7, v1, v5 y v3 o GUID en lote, en cualquier formato, y decodifica la versión y la marca de tiempo de un UUID
Decodificar y Codificar Base64
Decodifica y codifica Base64: texto (UTF-8, seguro para URL), imágenes, PDF y cualquier archivo a Base64 o data URI
Traductor Binario
Traduce texto a binario y binario a texto: detección automática, hex, decimal y octal
Calculadora de Subredes
Red, broadcast, hosts utilizables y máscaras de cualquier bloque IPv4 o IPv6, con VLSM, divisiones y subredes en la nube