Cómo convertir marcas de tiempo Unix a fechas legibles
¿Por qué convertir marcas de tiempo Unix?
Las marcas de tiempo Unix son ideales para las máquinas: un solo entero es compacto, inequívoco y fácil de ordenar. Pero para los humanos, 1785292800 no significa nada hasta que se traduce a una fecha y hora de calendario. Ya sea que estés depurando un archivo de registro, analizando registros de bases de datos o leyendo una respuesta de API, saber cómo convertir marcas de tiempo rápidamente es una habilidad esencial.
Método 1: Usar nuestro convertidor de marcas de tiempo Unix en línea
El método más rápido y fiable es usar una herramienta de conversión dedicada.
Nuestro Convertidor de marcas de tiempo Unix acepta marcas de tiempo tanto en segundos como en milisegundos, detecta automáticamente la resolución y muestra el resultado en múltiples zonas horarias simultáneamente. También puedes ir en la otra dirección: ingresar una fecha legible y obtener la marca de tiempo Unix correspondiente.
Este enfoque es ideal cuando necesitas una conversión rápida y puntual sin tocar una línea de comandos.
Método 2: Usar la línea de comandos de Linux (comando date)
Si tienes acceso a una terminal de Linux o macOS, el comando date es tu mejor aliado.
Convertir una marca de tiempo a una fecha legible
# On GNU Linux (most distributions)
date -d @1785292800
# Specify a custom format
date -d @1785292800 +"%Y-%m-%d %H:%M:%S"
# Output: 2026-07-19 00:00:00
# With timezone
TZ="America/New_York" date -d @1785292800
# Output: Sun Jul 19 00:00:00 EDT 2026
En macOS (date de BSD), la sintaxis difiere ligeramente:
# On macOS
date -r 1785292800
# With custom format
date -r 1785292800 +"%Y-%m-%d %H:%M:%S"
Convertir una fecha a una marca de tiempo Unix
# On GNU Linux
date -d "2026-07-19 00:00:00" +%s
# On macOS
date -j -f "%Y-%m-%d %H:%M:%S" "2026-07-19 00:00:00" +%s
Método 3: Cálculo manual
Aunque rara vez necesitarás hacerlo a mano, entender las matemáticas desmitifica cómo funciona el sistema.
La fórmula
seconds = (year - 1970) × 31536000 + (month offset) × 86400 + day × 86400 + hours × 3600 + minutes × 60 + seconds
La parte complicada es tener en cuenta los años bisiestos. Un año es bisiesto si es divisible por 4, excepto los años de siglo que no son divisibles por 400.
Aproximaciones mentales rápidas
- 86 400 segundos = 1 día
- 604 800 segundos = 1 semana
- Aproximadamente 31 536 000 segundos = 1 año común
- Aproximadamente 31 622 400 segundos = 1 año bisiesto
Para un cálculo aproximado, puedes calcular timestamp / 86400 para obtener el número de días desde el epoch y luego sumar esos días al 1 de enero de 1970.
Método 4: Usar lenguajes de programación
Todos los lenguajes de programación importantes tienen funciones integradas para la conversión de marcas de tiempo. Estas son las más comunes:
JavaScript (Navegador o Node.js)
// Timestamp to date (JavaScript uses milliseconds)
const timestamp = 1785292800;
const date = new Date(timestamp * 1000);
console.log(date.toISOString());
// Output: 2026-07-19T00:00:00.000Z
// Date to timestamp
const ts = Math.floor(new Date("2026-07-19").getTime() / 1000);
console.log(ts);
// Output: 1785292800
Python
from datetime import datetime
# Timestamp to date
dt = datetime.utcfromtimestamp(1785292800)
print(dt.isoformat())
# Output: 2026-07-19T00:00:00
# Timezone-aware (Python 3.9+)
from zoneinfo import ZoneInfo
dt_tz = datetime.fromtimestamp(1785292800, tz=ZoneInfo("America/New_York"))
print(dt_tz.isoformat())
# Output: 2026-07-19T00:00:00-04:00
# Date to timestamp
import time
ts = time.mktime(datetime(2026, 7, 19).timetuple())
print(ts)
PHP
<?php
// Timestamp to date
echo date("Y-m-d H:i:s", 1785292800);
// Output: 2026-07-19 00:00:00
// Date to timestamp
echo strtotime("2026-07-19 00:00:00");
// Output: 1785292800
Método 5: Usar software de hojas de cálculo
Google Sheets
Usa la fórmula =DATE(1970,1,1) + A1 / 86400 donde A1 contiene la marca de tiempo. Formatea la celda del resultado como fecha.
Microsoft Excel
=DATE(1970,1,1) + A1 / 86400
En Excel para Windows, es posible que necesites:
=(A1 / 86400) + DATE(1970,1,1)
Casos límite a tener en cuenta
Segundos vs. milisegundos
Este es el error más común. Si pasas un valor en milisegundos (por ejemplo, 1785292800000) a una función que espera segundos, obtendrás una fecha aproximadamente 56 000 años en el futuro.
Cómo detectarlo:
- Si el número tiene 10 dígitos, probablemente son segundos
- Si el número tiene 13 dígitos, probablemente son milisegundos
- Algunos sistemas también usan microsegundos (16 dígitos) o nanosegundos (19 dígitos)
Marcas de tiempo negativas (fechas anteriores a 1970)
Las marcas de tiempo Unix pueden representar fechas anteriores al epoch usando números negativos:
date -d @-126230400
# Output: Tue Dec 31 00:00:00 -1969
No todas las herramientas de conversión manejan correctamente las marcas de tiempo negativas. Nuestro convertidor en línea sí lo hace.
Segundos intercalares
El tiempo Unix ignora los segundos intercalares por diseño. Una marca de tiempo Unix nunca mostrará :59:60 ni siquiera durante la inserción de un segundo intercalar. Esto significa que la marca de tiempo diverge del tiempo atómico en una cantidad pequeña (actualmente 27 segundos) pero creciente.
Resumen
| Método | Mejor para |
|--------|----------|
| Convertidor en línea (/linux-timestamp) | Conversiones rápidas y puntuales |
| Comando date | Usuarios de terminal y scripts |
| Cálculo manual | Entender cómo funciona |
| Lenguajes de programación | Automatización y aplicaciones |
| Hojas de cálculo | Análisis de datos |
Usa nuestro Convertidor de marcas de tiempo Unix para realizar conversiones instantáneas y precisas con detección automática de la zona horaria.