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

Resultado de fecha

¿Necesitas más opciones? Asistente de timestamps JavaScript