V najnovšej verzii prehliadača Firefox (od verzie 139) je dostupné nové Temporal API, ktoré predstavuje modernú náhradu za zastaraný objekt Date v JavaScripte. Temporal API prináša robustné a spoľahlivé riešenie pre prácu s dátumami, časom, časovými pásmami a kalendármi. Rieši mnohé dlhoročné problémy pôvodného riešenia.
Hlavné výhody Temporal API sú:
- Presná manipulácia s dátumami a časom
- Podpora časových pásiem a kalendárov
- Imutabilita objektov
- Prehľadná štruktúra API
- Podpora pre rôzne formáty a operácie
- Jednoduché porovnávanie a výpočty
Nové funkcie si môžete vyskúšať v najnovšej verzii Firefoxu. Tu je jednoduchý príklad, ktorý demonštruje základné použitie Temporal API:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
// 1. Getting the Current Date and Time
const nowDateTime = Temporal.Now.plainDateTimeISO();
console.log("Current local date and time:", nowDateTime.toString());
// 2. Working with Plain Dates and Times
const birthday = Temporal.PlainDate.from("1990-12-25");
console.log("Birthday (PlainDate):", birthday.toString());
const lunchTime = Temporal.PlainTime.from("12:30:00");
console.log("Lunch time (PlainTime):", lunchTime.toString());
// 3. Manipulating Date-Time Values
const initialDateTime = Temporal.PlainDateTime.from("2024-11-01T10:23:45.678");
console.log("Initial DateTime:", initialDateTime.toString());
const added = initialDateTime.add({ days: 2, hours: 5 });
console.log("After adding 2 days and 5 hours:", added.toString());
const subtracted = added.subtract({ hours: 1, minutes: 30 });
console.log("After subtracting 1 hour and 30 minutes:", subtracted.toString());
const rounded = subtracted.round({ smallestUnit: "minute" });
console.log("Rounded to nearest minute:", rounded.toString());
// 4. Handling Time Zones
const zonedNow = Temporal.Now.zonedDateTimeISO();
console.log("Current time in local time zone:", zonedNow.toString());
const laTime = Temporal.Now.zonedDateTimeISO("America/Los_Angeles");
console.log("Current time in Los Angeles:", laTime.toString());
// 5. Calculating Durations and Differences
const today = Temporal.Now.plainDateISO();
const futureDate = Temporal.PlainDate.from("2028-10-11");
const duration = today.until(futureDate, { largestUnit: "day" });
console.log(`Days until 2028-10-11: ${duration.days}`);
// 6. Modifying Components with .with()
const changedMonth = rounded.with({ month: 12 });
console.log("Changed month to December:", changedMonth.toString());
</script>
</head>
<body>
<p>
Testing Temporal API features in JavaScript.
Check the console for output.
</p>
</body>
</html>
Výsledok tohto kódu môžete vidieť v konzole prehliadača, ktorú otvoríte stlačením F12 alebo Ctrl+Shift+I.
Je pozoruhodné, že implementáciu Temporal API vyvinul jediný vývojár – dobrovoľník.
Funkcie pre prácu s dátumami a časom v JavaScripte sa tak konečne stali modernými a použiteľnými. Implementácia však prichádza poriadne neskoro.