La API Temporal de JavaScript es una de las incorporaciones más esperadas en el lenguaje. Diseñada para resolver las deficiencias del objeto Date
, esta API proporciona una manera más robusta, precisa y flexible de trabajar con fechas y horas.
¿Por qué se Necesita la API Temporal?
El objeto Date
de JavaScript, introducido en 1995, ha sido ampliamente criticado por sus problemas de diseño:
- No maneja correctamente los husos horarios y las conversiones.
- Su API es inconsistente y propensa a errores.
- No permite manipulaciones avanzadas sin bibliotecas externas como Moment.js, date-fns o Luxon.
La API Temporal soluciona estos problemas con una arquitectura moderna, basada en modelos matemáticos precisos para la manipulación de fechas y tiempos.
Características Principales
1. Precisión Mejorada
Temporal usa valores enteros en lugar de representaciones flotantes, eliminando errores de redondeo y mejorando la precisión.
2. Soporte para Diferentes Tipos de Fecha y Hora
Temporal introduce varios tipos de datos especializados:
Temporal.PlainDate
- Representa una fecha sin hora ni zona horaria.Temporal.PlainTime
- Representa una hora sin una fecha asociada.Temporal.PlainDateTime
- Combina fecha y hora sin zona horaria.Temporal.ZonedDateTime
- Combina fecha y hora con zona horaria.Temporal.Instant
- Representa un punto exacto en el tiempo (similar aDate
pero sin los problemas asociados).
3. Conversión y Manipulación de Fechas
Se pueden realizar operaciones de suma, resta y comparación de fechas con más facilidad y sin los errores comunes del objeto Date
.
Compatibilidad con Navegadores
Actualmente, la API Temporal no está disponible nativamente en los navegadores, pero se puede probar mediante un polyfill.
Puedes verificar la compatibilidad actualizada en: https://caniuse.com/?search=temporal.
¿Dónde Probar la API Temporal?
Puedes probar Temporal utilizando el polyfill oficial:
npm install @js-temporal/polyfill
Luego, importarlo en tu proyecto:
import { Temporal } from '@js-temporal/polyfill';
Ejemplos de Uso
1. Creación de una Fecha Simple
const fecha = Temporal.PlainDate.from('2025-03-26');
console.log(fecha.toString()); // "2025-03-26"
2. Suma de Días
const nuevaFecha = fecha.add({ days: 10 });
console.log(nuevaFecha.toString()); // "2025-04-05"
3. Diferencia entre Fechas
const fecha1 = Temporal.PlainDate.from('2025-03-01');
const fecha2 = Temporal.PlainDate.from('2025-03-26');
const diferencia = fecha2.since(fecha1);
console.log(diferencia.days); // 25
4. Manejo de Zonas Horarias
const ahora = Temporal.Now.zonedDateTimeISO('America/New_York');
console.log(ahora.toString());
Puedes ver más documentación al respecto en https://tc39.es/proposal-temporal/docs/.