Tutoriales
Cómo Convertir Timestamps en JavaScript: Tutorial Completo con Ejemplos
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)
// Obtener timestamp actual en milisegundos
const timestamp = Date.now();
console.log(timestamp);
// 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()
// Crear objeto Date y obtener timestamp
const timestamp = new Date().getTime();
console.log(timestamp);
// Salida: 1704067200000 (13 dígitos)
Método 3: Operador Unario Plus
// Atajo usando plus unario
const timestamp = +new Date();
console.log(timestamp);
// Salida: 1704067200000 (13 dígitos)
Paso 2: Convertir Timestamp a Fecha
Desde Milisegundos (13 dígitos)
const timestamp = 1704067200000;
const date = new Date(timestamp);
console.log(date.toString());
// Salida: "Mon Jan 01 2024 00:00:00 GMT+0000"
Desde Segundos (10 dígitos)
const timestampSec = 1704067200;
const date = new Date(timestampSec * 1000);
console.log(date.toString());
// Salida: "Mon Jan 01 2024 00:00:00 GMT+0000"
Función de Detección Automática
function timestampAFecha(ts) {
const cadena = String(ts);
if (cadena.length === 10) {
return new Date(ts * 1000);
} else if (cadena.length === 13) {
return new Date(ts);
} else if (cadena.length === 16) {
return new Date(ts / 1000);
} else if (cadena.length === 19) {
return new Date(ts / 1000000);
}
throw new Error('Precisión de timestamp desconocida');
}
Paso 3: Formatear Fechas
Usando toLocaleString()
const fecha = new Date(1704067200000);
// Español (España)
console.log(fecha.toLocaleString('es-ES'));
// Salida: "1/1/2024, 0:00:00"
// Con opciones
console.log(fecha.toLocaleString('es-ES', {
year: 'numeric',
month: 'long',
day: 'numeric',
hour: '2-digit',
minute: '2-digit'
}));
// Salida: "1 de enero de 2024, 00:00"
Formato ISO 8601
const fecha = new Date(1704067200000);
console.log(fecha.toISOString());
// Salida: "2024-01-01T00:00:00.000Z"
Paso 4: Trabajar con Zonas Horarias
Usando Intl.DateTimeFormat
const fecha = new Date(1704067200000);
// Nueva York
console.log(new Intl.DateTimeFormat('es-ES', {
timeZone: 'America/New_York',
dateStyle: 'full',
timeStyle: 'long'
}).format(fecha));
// Tokio
console.log(new Intl.DateTimeFormat('es-ES', {
timeZone: 'Asia/Tokyo',
dateStyle: 'full',
timeStyle: 'long'
}).format(fecha));
Paso 5: Convertir Date a Timestamp
const fecha = new Date('2024-01-01T00:00:00Z');
// A milisegundos
const ms = fecha.getTime();
console.log(ms); // 1704067200000
// A segundos
const seg = Math.floor(fecha.getTime() / 1000);
console.log(seg); // 1704067200
Errores Comunes a Evitar
1. Olvidar la Precisión
// ❌ Incorrecto - tratando segundos como milisegundos
const fecha = new Date(1704067200); // ¡Año 1970!
// ✅ Correcto - multiplicar por 1000
const fecha = new Date(1704067200 * 1000);
2. Confusión de Zona Horaria
// ❌ Incorrecto - hora local ambigua
const fecha = new Date("2024-01-01 12:00:00");
// ✅ Correcto - ISO 8601 explícito
const fecha = new Date("2024-01-01T12:00:00Z");
3. No Validar la Entrada
function timestampSeguro(ts) {
const num = Number(ts);
if (isNaN(num)) {
throw new Error('Timestamp inválido');
}
const fecha = new Date(num * 1000);
if (isNaN(fecha.getTime())) {
throw new Error('Fecha resultante inválida');
}
return fecha;
}
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!
Actualizacion
Confirma primero si el valor esta en segundos o milisegundos. Date usa milisegundos: multiplica los segundos Unix por 1000 y divide entre 1000 solo al devolver segundos.
Pruébalo
Prueba la conversión de timestamps
¿Necesitas más opciones? Asistente de timestamps JavaScript