Obiectul istoric Date din JavaScript este recunoscut la nivel universal ca fiind unul dintre cele mai deficitare elemente de limbaj: lunile sunt indexate ciudat de la 0 (ianuarie este 0, decembrie este 11), obiectele sunt mutabile, calculele de fus orar (Timezones) sunt aproape imposibile fără biblioteci greoaie (Moment.js, Day.js), iar trecerile de la ora de vară/iarnă creează bug-uri subtile.
Temporal API este noul standard global din JavaScript conceput pentru a înlocui complet obiectul Date. Toate obiectele Temporal sunt imutabile, respectă standardul internațional ISO 8601 și separă clar datele fără oră (PlainDate), orele fără dată (PlainTime) și momentele exacte cu fus orar (ZonedDateTime).
// 1. Obținerea momentului curent universal (UTC timestamp exact)
const acumUTC = Temporal.Now.instant();
console.log(acumUTC.toString()); // ex: "2026-10-24T14:30:00Z"
// 2. Data curentă în fusul orar al României (Europa/București)
const acumRomania = Temporal.Now.zonedDateTimeISO('Europe/Bucharest');
console.log(acumRomania.toString()); // ex: "2026-10-24T17:30:00+03:00[Europe/Bucharest]"
// 3. Crearea unei date pure (fără fus orar, fără erori de conversie)
const ziNastere = Temporal.PlainDate.from('1995-07-15');
console.log(ziNastere.year); // 1995
console.log(ziNastere.month); // 7 (Iulie este corect 7, nu 6!)
console.log(ziNastere.day); // 15
// 4. Calcule precise de timp (adunare / scădere de durate)
// Adăugăm 3 luni și 10 zile la o dată:
const dataExpirare = ziNastere.add({ months: 3, days: 10 });
console.log(dataExpirare.toString()); // "1995-10-25"
// 5. Calcularea diferenței exacte dintre două momente (Duration)
const astazi = Temporal.Now.plainDateISO();
const durata = astazi.since(ziNastere);
console.log(`Ai trăit ${durata.total({ unit: 'days' })} zile.`);
Structura Tipologică a Temporal API
| Tip Temporal | Ce reprezintă | Exemplu de valoare |
|---|---|---|
Temporal.PlainDate |
Doar an, lună și zi (fără oră și fără fus orar). | 2026-10-24 (zile de naștere, date din calendar) |
Temporal.PlainTime |
Doar oră, minute, secunde (fără dată). | 14:30:00 (ora de deschidere a magazinului) |
Temporal.ZonedDateTime |
Dată completă + oră + fus orar specific cu suport Daylight Saving. | 2026-10-24T17:30:00+03:00[Europe/Bucharest] |
Temporal.Duration |
O perioadă măsurabilă de timp (ani, luni, ore, secunde). | P3M10D (trei luni și zece zile) |