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.