Volver al blog

ES2026 Temporal API: JavaScript Finalmente Resuelve el Problema de Fechas Despues de 25 Anos

Hola HaWkers, despues de mas de 25 anos, JavaScript finalmente tendra una API de fechas decente. La Temporal API esta confirmada para ES2026 y promete acabar con todos los dolores de cabeza que conocemos del objeto Date. No mas bibliotecas externas para operaciones basicas con fechas.

¿Cuantas veces necesitaste instalar moment.js, date-fns o dayjs solo para formatear una fecha o calcular la diferencia entre dos dias? Esos dias estan contados.

El Problema con Date en JavaScript

El objeto Date de JavaScript es notoriamente problematico. Fue copiado de Java 1.0 en 1995 y carga todos los problemas de esa epoca.

Problemas Clasicos de Date

Mutabilidad:

const fecha = new Date('2026-01-04');
fecha.setMonth(5); // Modifica el objeto original!
console.log(fecha); // Jun 04 2026 - sorpresa!

Meses empiezan en 0:

const enero = new Date(2026, 0, 1); // Enero
const diciembre = new Date(2026, 11, 25); // Diciembre

Conociendo la Temporal API

La Temporal API resuelve todos estos problemas con un enfoque moderno y bien pensado.

Tipos Principales

// Temporal.PlainDate - solo fecha, sin hora o timezone
const cumple = Temporal.PlainDate.from('2026-03-15');

// Temporal.PlainTime - solo hora, sin fecha o timezone
const reunion = Temporal.PlainTime.from('14:30:00');

// Temporal.ZonedDateTime - fecha + hora + timezone
const vuelo = Temporal.ZonedDateTime.from('2026-03-15T14:30:00[America/Mexico_City]');

// Temporal.Duration - duracion de tiempo
const duracion = Temporal.Duration.from({ hours: 2, minutes: 30 });

Inmutabilidad Garantizada

const hoy = Temporal.PlainDate.from('2026-01-04');

const manana = hoy.add({ days: 1 });
const ayer = hoy.subtract({ days: 1 });

console.log(hoy.toString());     // 2026-01-04 (sin cambios!)
console.log(manana.toString());  // 2026-01-05

Operaciones Practicas

Calculando Diferencias

const inicio = Temporal.PlainDate.from('2026-01-04');
const fin = Temporal.PlainDate.from('2026-03-15');

const diferencia = inicio.until(fin);
console.log(diferencia.toString()); // P2M11D (2 meses y 11 dias)

const diasHasta = inicio.until(fin, { largestUnit: 'day' });
console.log(diasHasta.days); // 70

Trabajando con Timezones

const reunionNY = Temporal.ZonedDateTime.from(
  '2026-03-15T09:00:00[America/New_York]'
);

const reunionMX = reunionNY.withTimeZone('America/Mexico_City');
console.log(reunionMX.toString());

Soporte y Polyfills

Usando polyfill hoy:

npm install @js-temporal/polyfill
import { Temporal } from '@js-temporal/polyfill';

const hoy = Temporal.Now.plainDateISO();
console.log(hoy.toString());

Conclusion

La Temporal API es una de las adiciones mas esperadas a JavaScript. Despues de decadas dependiendo de bibliotecas externas para operaciones basicas con fechas, finalmente tendremos una solucion nativa, inmutable y bien disenada.

Si te sientes inspirado por la evolucion de JavaScript, te recomiendo que le des un vistazo a otro articulo: ES Modules Domina 2026: Por Que CommonJS Esta Siendo Abandonado donde descubriras otro gran cambio en el ecosistema JavaScript.

A por ello! 🦅

Comentarios (0)

Este artículo aún no tiene comentarios 😢. ¡Sé el primero! 🚀🦅

Añadir comentarios