Introducción
Convertir timestamps en JavaScript es una habilidad fundamental para desarrolladores web. Ya sea que trabajes con APIs, bases de datos o interfaces de usuario, frecuentemente necesitarás convertir entre timestamps Unix y fechas legibles. Este tutorial te guiará a través de todo lo que necesitas saber.
Lo que Aprenderás
- ✅ Obtener timestamps actuales
- ✅ Convertir timestamps a objetos Date
- ✅ Convertir objetos Date a timestamps
- ✅ Formatear timestamps para mostrar
- ✅ Manejar diferentes precisiones de timestamp
- ✅ Trabajar con zonas horarias
- ✅ Errores comunes y cómo evitarlos
Prerrequisitos
Solo necesitas conocimientos básicos de JavaScript. No se requieren bibliotecas externas para este tutorial (aunque mencionaremos algunas populares al final).
Paso 1: Obtener el Timestamp Actual
La operación más simple - obtener el tiempo actual como timestamp.
Método 1: Date.now() (Recomendado)
JAVASCRIPT1// Obtener timestamp actual en milisegundos 2const timestamp = Date.now(); 3console.log(timestamp); 4// Salida: 1704067200000 (13 dígitos)
¿Por qué usar esto?
- ✅ Método más rápido
- ✅ No necesita crear objeto Date
- ✅ El más comúnmente usado
Método 2: new Date().getTime()
JAVASCRIPT1// Crear objeto Date y obtener timestamp 2const timestamp = new Date().getTime(); 3console.log(timestamp); 4// Salida: 1704067200000 (13 dígitos)
Método 3: Operador Unario Plus
JAVASCRIPT1// Atajo usando plus unario 2const timestamp = +new Date(); 3console.log(timestamp); 4// Salida: 1704067200000 (13 dígitos)
Paso 2: Convertir Timestamp a Fecha
Desde Milisegundos (13 dígitos)
JAVASCRIPT1const timestamp = 1704067200000; 2const date = new Date(timestamp); 3console.log(date.toString()); 4// Salida: "Mon Jan 01 2024 00:00:00 GMT+0000"
Desde Segundos (10 dígitos)
JAVASCRIPT1const timestampSec = 1704067200; 2const date = new Date(timestampSec * 1000); 3console.log(date.toString()); 4// Salida: "Mon Jan 01 2024 00:00:00 GMT+0000"
Función de Detección Automática
JAVASCRIPT1function timestampAFecha(ts) { 2 const cadena = String(ts); 3 if (cadena.length === 10) { 4 return new Date(ts * 1000); 5 } else if (cadena.length === 13) { 6 return new Date(ts); 7 } else if (cadena.length === 16) { 8 return new Date(ts / 1000); 9 } else if (cadena.length === 19) { 10 return new Date(ts / 1000000); 11 } 12 throw new Error('Precisión de timestamp desconocida'); 13}
Paso 3: Formatear Fechas
Usando toLocaleString()
JAVASCRIPT1const fecha = new Date(1704067200000); 2 3// Español (España) 4console.log(fecha.toLocaleString('es-ES')); 5// Salida: "1/1/2024, 0:00:00" 6 7// Con opciones 8console.log(fecha.toLocaleString('es-ES', { 9 year: 'numeric', 10 month: 'long', 11 day: 'numeric', 12 hour: '2-digit', 13 minute: '2-digit' 14})); 15// Salida: "1 de enero de 2024, 00:00"
Formato ISO 8601
JAVASCRIPT1const fecha = new Date(1704067200000); 2console.log(fecha.toISOString()); 3// Salida: "2024-01-01T00:00:00.000Z"
Paso 4: Trabajar con Zonas Horarias
Usando Intl.DateTimeFormat
JAVASCRIPT1const fecha = new Date(1704067200000); 2 3// Nueva York 4console.log(new Intl.DateTimeFormat('es-ES', { 5 timeZone: 'America/New_York', 6 dateStyle: 'full', 7 timeStyle: 'long' 8}).format(fecha)); 9 10// Tokio 11console.log(new Intl.DateTimeFormat('es-ES', { 12 timeZone: 'Asia/Tokyo', 13 dateStyle: 'full', 14 timeStyle: 'long' 15}).format(fecha));
Paso 5: Convertir Date a Timestamp
JAVASCRIPT1const fecha = new Date('2024-01-01T00:00:00Z'); 2 3// A milisegundos 4const ms = fecha.getTime(); 5console.log(ms); // 1704067200000 6 7// A segundos 8const seg = Math.floor(fecha.getTime() / 1000); 9console.log(seg); // 1704067200
Errores Comunes a Evitar
1. Olvidar la Precisión
JAVASCRIPT1// ❌ Incorrecto - tratando segundos como milisegundos 2const fecha = new Date(1704067200); // ¡Año 1970! 3 4// ✅ Correcto - multiplicar por 1000 5const fecha = new Date(1704067200 * 1000);
2. Confusión de Zona Horaria
JAVASCRIPT1// ❌ Incorrecto - hora local ambigua 2const fecha = new Date("2024-01-01 12:00:00"); 3 4// ✅ Correcto - ISO 8601 explícito 5const fecha = new Date("2024-01-01T12:00:00Z");
3. No Validar la Entrada
JAVASCRIPT1function timestampSeguro(ts) { 2 const num = Number(ts); 3 if (isNaN(num)) { 4 throw new Error('Timestamp inválido'); 5 } 6 7 const fecha = new Date(num * 1000); 8 if (isNaN(fecha.getTime())) { 9 throw new Error('Fecha resultante inválida'); 10 } 11 12 return fecha; 13}
Bibliotecas Recomendadas
Para proyectos más complejos, considera estas bibliotecas:
- Luxon↗ - Moderna, con soporte de zonas horarias
- date-fns↗ - Modular y ligera
- Day.js↗ - API similar a Moment, muy ligera
Resumen
Has aprendido cómo:
- Obtener el timestamp actual usando
Date.now() - Convertir timestamps a objetos Date
- Formatear fechas para diferentes locales
- Manejar diferentes precisiones (s, ms, µs, ns)
- Trabajar con zonas horarias
- Evitar errores comunes
¡Prueba nuestro Convertidor Unix Timestamp para practicar estas conversiones!