Szczeg贸艂owe om贸wienie API Temporal w JavaScript do konwersji kalendarzy, umo偶liwiaj膮ce precyzyjne mapowanie dat mi臋dzy r贸偶nymi systemami kalendarzowymi. Dowiedz si臋, jak obs艂ugiwa膰 daty w kalendarzach islamskim, hebrajskim, buddyjskim i innych.
Konwersja kalendarzy w JavaScript Temporal: Opanowanie mapowania dat mi臋dzy kalendarzami
艢wiat funkcjonuje w oparciu o wi臋cej ni偶 tylko kalendarz gregoria艅ski. Firmy rozwijaj膮ce si臋 globalnie musz膮 uwzgl臋dnia膰 r贸偶norodne 艣wi臋ta kulturowe i religijne, z kt贸rych ka偶de jest powi膮zane z okre艣lonymi systemami kalendarzowymi. Nowoczesne API Temporal w JavaScript dostarcza pot臋偶nych narz臋dzi do radzenia sobie z tymi z艂o偶ono艣ciami, pozwalaj膮c programistom na p艂ynne mapowanie dat mi臋dzy kalendarzami i zapewnienie dok艂adnego planowania, oblicze艅 oraz prezentacji danych. Ten kompleksowy przewodnik zg艂臋bia mo偶liwo艣ci konwersji kalendarzy w API Temporal, oferuj膮c praktyczne przyk艂ady i najlepsze praktyki tworzenia aplikacji 艣wiadomych globalnie.
Zrozumienie potrzeby mapowania dat mi臋dzy kalendarzami
Tradycyjne obiekty `Date` w JavaScript maj膮 ograniczenia w obs艂udze kalendarzy innych ni偶 gregoria艅ski. API Temporal rozwi膮zuje ten problem, zapewniaj膮c ustandaryzowany i solidny spos贸b pracy z r贸偶nymi systemami kalendarzowymi. Rozwa偶my nast臋puj膮ce scenariusze:
- Planowanie spotka艅 mi臋dzynarodowych: Dok艂adne okre艣lenie r贸wnowa偶nej daty w kalendarzu islamskim (Hid偶ry) lub hebrajskim dla wydarzenia zaplanowanego w kalendarzu gregoria艅skim jest kluczowe dla poszanowania 艣wi膮t religijnych i wra偶liwo艣ci kulturowej.
- Obliczanie odsetek od po偶yczek w r贸偶nych regionach: Niekt贸re instytucje finansowe u偶ywaj膮 okre艣lonych kalendarzy do obliczania odsetek. Temporal pozwala na precyzyjn膮 arytmetyk臋 dat w tych systemach.
- Wy艣wietlanie dat w formatach preferowanych przez u偶ytkownika: Dostosowanie wy艣wietlania dat do lokalizacji i preferencji kalendarza u偶ytkownika poprawia do艣wiadczenie u偶ytkownika, szczeg贸lnie w aplikacjach skierowanych do zr贸偶nicowanych populacji.
- Analiza danych historycznych: Podczas pracy z historycznymi zbiorami danych, zrozumienie i konwersja dat zapisanych w starszych lub mniej popularnych kalendarzach staje si臋 niezb臋dne do ich prawid艂owej interpretacji.
Wprowadzenie do API Temporal i kalendarzy
API Temporal, obecnie szeroko wspierane w nowoczesnych 艣rodowiskach JavaScript, oferuje bardziej intuicyjny i pot臋偶ny spos贸b pracy z datami, czasem i strefami czasowymi. W jego rdzeniu obiekt `Temporal.Calendar` reprezentuje okre艣lony system kalendarzowy. Temporal.PlainDate, Temporal.PlainDateTime i inne typy Temporal mog膮 by膰 powi膮zane z instancj膮 `Temporal.Calendar`.
API Temporal obecnie obs艂uguje nast臋puj膮ce kalendarze (w momencie pisania tego tekstu):
- `iso8601` (gregoria艅ski - domy艣lny)
- `gregory` (alias dla `iso8601`)
- `islamic`
- `islamic-umalqura`
- `islamic-tbla`
- `islamic-rgsa`
- `islamic-civil`
- `hebrew`
- `buddhist`
- `roc` (Republika Chi艅ska)
- `japanese`
- `persian`
Przysz艂e wersje mog膮 wprowadzi膰 wi臋cej kalendarzy lub pozwoli膰 na niestandardowe implementacje kalendarzy.
Podstawowa konwersja kalendarzy z Temporal.PlainDate
Obiekt `Temporal.PlainDate` reprezentuje dat臋 bez strefy czasowej. Mo偶esz utworzy膰 `Temporal.PlainDate` powi膮zany z okre艣lonym kalendarzem:
const gregorianDate = Temporal.PlainDate.from('2024-01-20');
const islamicCalendar = Temporal.Calendar.from('islamic');
const islamicDate = Temporal.PlainDate.from({ year: 1445, month: 6, day: 8, calendar: islamicCalendar });
console.log(gregorianDate.toString()); // Wynik: 2024-01-20
console.log(islamicDate.toString()); // Wynik: 1445-06-08[u-ca=islamic]
Metoda `toString()` wy艣wietli dat臋 z adnotacj膮 kalendarza `[u-ca=islamic]`. Wskazuje to, 偶e data jest powi膮zana z kalendarzem islamskim.
Konwersja mi臋dzy kalendarzami
Kluczem do konwersji mi臋dzy kalendarzami jest utworzenie obiekt贸w `Temporal.PlainDate` powi膮zanych z ka偶dym kalendarzem, a nast臋pnie wyodr臋bnienie odpowiednich sk艂adnik贸w daty. Oto jak przekonwertowa膰 dat臋 gregoria艅sk膮 na jej odpowiednik w kalendarzu islamskim:
const gregorianDate = Temporal.PlainDate.from('2024-01-20');
const islamicCalendar = Temporal.Calendar.from('islamic');
// Wyodr臋bnij sk艂adniki daty w kalendarzu islamskim
const islamicYear = gregorianDate.toPlainDate(islamicCalendar).year;
const islamicMonth = gregorianDate.toPlainDate(islamicCalendar).month;
const islamicDay = gregorianDate.toPlainDate(islamicCalendar).day;
console.log(`Gregorian: ${gregorianDate.toString()}`);
console.log(`Islamic: ${islamicYear}-${islamicMonth}-${islamicDay}`); // Wynik: Islamic: 1445-6-8
Przeanalizujmy ten przyk艂ad:
- Zaczynamy od `gregorianDate` reprezentowanej jako obiekt `Temporal.PlainDate`.
- Tworzymy obiekt `islamicCalendar` za pomoc膮 `Temporal.Calendar.from('islamic')`.
- G艂贸wna konwersja odbywa si臋 za pomoc膮 `gregorianDate.toPlainDate(islamicCalendar)`. Tworzy to nowy obiekt `Temporal.PlainDate` reprezentuj膮cy ten sam punkt w czasie, ale teraz powi膮zany z kalendarzem islamskim.
- Wyodr臋bniamy sk艂adniki `year`, `month` i `day` z przekonwertowanego obiektu `Temporal.PlainDate`.
Mo偶esz dostosowa膰 ten wzorzec do konwersji mi臋dzy dowolnymi dwoma kalendarzami obs艂ugiwanymi przez API Temporal.
Zaawansowana obs艂uga kalendarzy: Kalendarze islamskie
Kalendarz islamski ma kilka odmian. API Temporal obs艂uguje nast臋puj膮ce:
- `islamic`: Og贸lny kalendarz islamski (implementacja mo偶e si臋 r贸偶ni膰).
- `islamic-umalqura`: Oparty na kalendarzu Umm al-Qura z Arabii Saudyjskiej.
- `islamic-tbla`: Oparty na obliczeniach tabelarycznych.
- `islamic-rgsa`: Oparty na Religijnym Generalnym Sekretariacie Awqaf (Egipt).
- `islamic-civil`: Czysto arytmetyczna wersja kalendarza islamskiego, u偶ywana g艂贸wnie do oblicze艅.
Pracuj膮c z kalendarzem islamskim, kluczowe jest zrozumienie, kt贸ra odmiana jest odpowiednia dla Twojego przypadku u偶ycia. Na przyk艂ad, w przypadku 艣wi膮t religijnych w Arabii Saudyjskiej, prawdopodobnie b臋dziesz chcia艂 u偶y膰 `islamic-umalqura`. Do oblicze艅 finansowych, `islamic-civil` mo偶e by膰 bardziej odpowiedni ze wzgl臋du na jego przewidywaln膮 natur臋.
const gregorianDate = Temporal.PlainDate.from('2024-03-11');
const islamicUmalquraCalendar = Temporal.Calendar.from('islamic-umalqura');
const islamicCivilCalendar = Temporal.Calendar.from('islamic-civil');
const islamicUmalquraDate = gregorianDate.toPlainDate(islamicUmalquraCalendar);
const islamicCivilDate = gregorianDate.toPlainDate(islamicCivilCalendar);
console.log(`Gregorian: ${gregorianDate.toString()}`);
console.log(`Islamic (Umm al-Qura): ${islamicUmalquraDate.year}-${islamicUmalquraDate.month}-${islamicUmalquraDate.day}`);
console.log(`Islamic (Civil): ${islamicCivilDate.year}-${islamicCivilDate.month}-${islamicCivilDate.day}`);
Wa偶ne uwagi dotycz膮ce kalendarzy islamskich:
- Pocz膮tek nowego miesi膮ca w kalendarzu islamskim opiera si臋 na obserwacji nowego sierpa ksi臋偶yca. Kalendarz `islamic-umalqura` ma na celu dostosowanie si臋 do faktycznych obserwacji ksi臋偶yca w Arabii Saudyjskiej, ale nadal mog膮 wyst臋powa膰 rozbie偶no艣ci.
- Kalendarz `islamic-civil` jest matematycznym przybli偶eniem i nie odzwierciedla rzeczywistych obserwacji ksi臋偶yca.
- Zawsze konsultuj si臋 z odpowiednimi w艂adzami religijnymi lub wiarygodnymi 藕r贸d艂ami w celu uzyskania dok艂adnych dat 艣wi膮t islamskich.
Praca z kalendarzem hebrajskim
Kalendarz hebrajski to kalendarz ksi臋偶ycowo-s艂oneczny u偶ywany do 偶ydowskich obrz臋d贸w religijnych oraz jako oficjalny kalendarz w Izraelu. Zawiera miesi膮ce przest臋pne, aby zachowa膰 zgodno艣膰 z porami roku.
const gregorianDate = Temporal.PlainDate.from('2024-03-11');
const hebrewCalendar = Temporal.Calendar.from('hebrew');
const hebrewDate = gregorianDate.toPlainDate(hebrewCalendar);
console.log(`Gregorian: ${gregorianDate.toString()}`);
console.log(`Hebrew: ${hebrewDate.year}-${hebrewDate.month}-${hebrewDate.day}`);
Kluczowe cechy kalendarza hebrajskiego i Temporal:
- Miesi膮ce przest臋pne s膮 automatycznie obs艂ugiwane przez API Temporal. Nie musisz implementowa膰 niestandardowej logiki do okre艣lania lat przest臋pnych ani dodawania dodatkowych miesi臋cy.
- Numeracja lat zaczyna si臋 od tradycyjnej epoki 偶ydowskiej (stworzenia 艣wiata).
- Nazwy miesi臋cy w kalendarzu hebrajskim r贸偶ni膮 si臋 od kalendarza gregoria艅skiego. Mo偶esz uzyska膰 dost臋p do tych nazw miesi臋cy za pomoc膮 bibliotek internacjonalizacji (i18n) lub niestandardowych mapowa艅.
Obs艂uga kalendarzy buddyjskiego, ROC, japo艅skiego i perskiego
API Temporal obs艂uguje r贸wnie偶 inne kalendarze, z kt贸rych ka偶dy ma swoje w艂asne osobliwo艣ci. Oto kilka uwag:
- Kalendarz buddyjski: Kalendarz buddyjski to kalendarz ksi臋偶ycowo-s艂oneczny u偶ywany w wielu krajach Azji Po艂udniowo-Wschodniej. Numeracja lat zazwyczaj zaczyna si臋 od 艣mierci Buddy.
- Kalendarz ROC (Republika Chi艅ska): Ten kalendarz jest u偶ywany na Tajwanie i numeruje lata od za艂o偶enia Republiki Chi艅skiej w 1912 roku.
- Kalendarz japo艅ski: Kalendarz japo艅ski opiera si臋 na kalendarzu gregoria艅skim, ale u偶ywa japo艅skich nazw er (neng艒) do oznaczania lat.
- Kalendarz perski: Kalendarz perski to kalendarz s艂oneczny u偶ywany g艂贸wnie w Iranie i Afganistanie.
const gregorianDate = Temporal.PlainDate.from('2024-03-11');
const buddhistCalendar = Temporal.Calendar.from('buddhist');
const rocCalendar = Temporal.Calendar.from('roc');
const japaneseCalendar = Temporal.Calendar.from('japanese');
const persianCalendar = Temporal.Calendar.from('persian');
const buddhistDate = gregorianDate.toPlainDate(buddhistCalendar);
const rocDate = gregorianDate.toPlainDate(rocCalendar);
const japaneseDate = gregorianDate.toPlainDate(japaneseCalendar);
const persianDate = gregorianDate.toPlainDate(persianCalendar);
console.log(`Gregorian: ${gregorianDate.toString()}`);
console.log(`Buddhist: ${buddhistDate.year}-${buddhistDate.month}-${buddhistDate.day}`);
console.log(`ROC: ${rocDate.year}-${rocDate.month}-${rocDate.day}`);
console.log(`Japanese: ${japaneseDate.year}-${japaneseDate.month}-${japaneseDate.day}`);
console.log(`Persian: ${persianDate.year}-${persianDate.month}-${persianDate.day}`);
Podczas korzystania z tych kalendarzy, b膮d藕 艣wiadomy ich specyficznej epoki (roku pocz膮tkowego) i wszelkich niuans贸w kulturowych zwi膮zanych z reprezentacj膮 dat.
Temporal.Now a kwestie zwi膮zane z kalendarzem
Chocia偶 `Temporal.Now` mo偶e by膰 u偶ywane do uzyskania bie偶膮cej daty i czasu, wa偶ne jest, aby zrozumie膰, 偶e domy艣lnie zwraca bie偶膮c膮 dat臋 i czas w kalendarzu ISO 8601. Je艣li potrzebujesz bie偶膮cej daty w innym kalendarzu, musisz j膮 przekonwertowa膰:
const islamicCalendar = Temporal.Calendar.from('islamic');
const now = Temporal.Now.plainDateISO(); // Bie偶膮ca data w kalendarzu ISO 8601
const islamicNow = now.toPlainDate(islamicCalendar);
console.log(`Current Gregorian Date: ${now.toString()}`);
console.log(`Current Islamic Date: ${islamicNow.year}-${islamicNow.month}-${islamicNow.day}`);
Formatowanie dat i internacjonalizacja (i18n)
Konwersja dat to tylko cz臋艣膰 r贸wnania. Musisz je r贸wnie偶 poprawnie sformatowa膰 do wy艣wietlenia. API `Intl.DateTimeFormat` w JavaScript zapewnia pot臋偶ne mo偶liwo艣ci internacjonalizacji. Mo偶esz go u偶ywa膰 w po艂膮czeniu z API Temporal do formatowania dat w spos贸b uwzgl臋dniaj膮cy ustawienia regionalne, bior膮c pod uwag臋 powi膮zany kalendarz.
const gregorianDate = Temporal.PlainDate.from('2024-01-20');
const islamicCalendar = Temporal.Calendar.from('islamic');
const islamicDate = gregorianDate.toPlainDate(islamicCalendar);
const formatter = new Intl.DateTimeFormat('ar-SA-u-ca-islamic', { // Arabski (Arabia Saudyjska) z kalendarzem islamskim
year: 'numeric',
month: 'long',
day: 'numeric',
});
console.log(formatter.format(islamicDate)); // Przyk艂adowy wynik: 佗贍 乇噩亘貙 佟伽伽佶 賴賭
Przeanalizujmy kod:
- `'ar-SA-u-ca-islamic'` to ci膮g znak贸w lokalizacji. `ar-SA` okre艣la j臋zyk arabski (Arabia Saudyjska), a `u-ca-islamic` jawnie 偶膮da kalendarza islamskiego.
- Opcje `Intl.DateTimeFormat` kontroluj膮 spos贸b formatowania daty (rok, miesi膮c, dzie艅).
- Metoda `format()` przyjmuje obiekt `Temporal.PlainDate` (w tym przypadku `islamicDate`) i zwraca sformatowany ci膮g znak贸w zgodnie z okre艣lon膮 lokalizacj膮 i kalendarzem.
Mo偶esz dostosowa膰 ci膮g znak贸w lokalizacji i opcje formatowania do swoich specyficznych potrzeb. Na przyk艂ad, aby sformatowa膰 dat臋 w j臋zyku hebrajskim:
const gregorianDate = Temporal.PlainDate.from('2024-03-11');
const hebrewCalendar = Temporal.Calendar.from('hebrew');
const hebrewDate = gregorianDate.toPlainDate(hebrewCalendar);
const formatter = new Intl.DateTimeFormat('he-IL-u-ca-hebrew', { // Hebrajski (Izrael) z kalendarzem hebrajskim
year: 'numeric',
month: 'long',
day: 'numeric',
});
console.log(formatter.format(hebrewDate));
Wskaz贸wki dotycz膮ce efektywnego formatowania dat:
- U偶ywaj ci膮g贸w znak贸w lokalizacji, kt贸re dok艂adnie odzwierciedlaj膮 preferowany j臋zyk i region u偶ytkownika.
- Wybieraj opcje formatowania odpowiednie dla kontekstu (np. kr贸tkie formaty dat dla kompaktowych wy艣wietlaczy, d艂ugie formaty dat dla szczeg贸艂owych prezentacji).
- Testuj swoje formatowanie w r贸偶nych lokalizacjach, aby zapewni膰 dok艂adno艣膰 i czytelno艣膰.
Wykonywanie arytmetyki dat mi臋dzy kalendarzami
API Temporal doskonale radzi sobie z arytmetyk膮 dat. Mo偶esz dodawa膰 lub odejmowa膰 dni, miesi膮ce lub lata od obiektu `Temporal.PlainDate`, nawet pracuj膮c z kalendarzami innymi ni偶 gregoria艅ski.
const gregorianDate = Temporal.PlainDate.from('2024-01-20');
const islamicCalendar = Temporal.Calendar.from('islamic');
const islamicDate = gregorianDate.toPlainDate(islamicCalendar);
// Dodaj 30 dni do daty islamskiej
const futureIslamicDate = islamicDate.add({ days: 30 });
console.log(`Original Islamic Date: ${islamicDate.year}-${islamicDate.month}-${islamicDate.day}`);
console.log(`Islamic Date + 30 days: ${futureIslamicDate.year}-${futureIslamicDate.month}-${futureIslamicDate.day}`);
// Przekonwertuj przysz艂膮 dat臋 islamsk膮 z powrotem na gregoria艅sk膮
const futureGregorianDate = futureIslamicDate.toPlainDate('iso8601');
console.log(`Equivalent Gregorian Date: ${futureGregorianDate.toString()}`);
Kluczowe uwagi dotycz膮ce arytmetyki dat:
- Metody `add()` i `subtract()` zwracaj膮 nowe obiekty `Temporal.PlainDate`; nie modyfikuj膮 one oryginalnego obiektu.
- Podczas dodawania lub odejmowania miesi臋cy lub lat, API Temporal obs艂uguje specyficzne dla kalendarza zasady dotycz膮ce lat przest臋pnych i d艂ugo艣ci miesi臋cy.
- Nale偶y pami臋ta膰 o potencjalnych przepe艂nieniach lub niedope艂nieniach daty podczas wykonywania operacji arytmetycznych. API Temporal zazwyczaj dostosuje dat臋 do najbli偶szej prawid艂owej daty w danym kalendarzu.
Obs艂uga niejednoznacznych dat
W niekt贸rych przypadkach data mo偶e by膰 niejednoznaczna podczas konwersji mi臋dzy kalendarzami. Mo偶e si臋 to zdarzy膰, gdy dana data nie istnieje w kalendarzu docelowym lub gdy wiele dat w kalendarzu docelowym mo偶e odpowiada膰 dacie 藕r贸d艂owej. Temporal radzi sobie z takimi sytuacjami z wdzi臋kiem, zazwyczaj zwracaj膮c najbli偶sz膮 prawid艂ow膮 dat臋.
Na przyk艂ad, rozwa偶 konwersj臋 daty gregoria艅skiej blisko ko艅ca miesi膮ca gregoria艅skiego na kalendarz islamski, gdzie odpowiadaj膮cy mu miesi膮c islamski mo偶e by膰 kr贸tszy. Temporal automatycznie dostosuje wynikow膮 dat臋 islamsk膮 do ostatniego dnia tego miesi膮ca.
Obs艂uga b艂臋d贸w i walidacja
Chocia偶 API Temporal jest solidne, niezb臋dne jest wdro偶enie odpowiedniej obs艂ugi b艂臋d贸w i walidacji, aby zapobiec nieoczekiwanemu zachowaniu. Oto kilka typowych scenariuszy do rozwa偶enia:
- Nieprawid艂owe nazwy kalendarzy: Je艣li podasz nieprawid艂ow膮 nazw臋 kalendarza do `Temporal.Calendar.from()`, rzuci to b艂膮d `RangeError`. Z艂ap ten b艂膮d i przeka偶 przyjazny dla u偶ytkownika komunikat.
- Nieprawid艂owe formaty dat: Je艣li spr贸bujesz utworzy膰 `Temporal.PlainDate` z nieprawid艂owego ci膮gu znak贸w daty, rzuci to b艂膮d `RangeError`. Waliduj ci膮gi znak贸w daty przed przekazaniem ich do `Temporal.PlainDate.from()`.
- Nieobs艂ugiwane operacje: Niekt贸re operacje specyficzne dla kalendarza mog膮 nie by膰 obs艂ugiwane przez API Temporal. Sprawd藕 dokumentacj臋 dla konkretnego kalendarza, kt贸rego u偶ywasz.
Dobre praktyki mapowania dat mi臋dzy kalendarzami
Aby zapewni膰 dok艂adno艣膰 i 艂atwo艣膰 w utrzymaniu podczas pracy z mapowaniem dat mi臋dzy kalendarzami, post臋puj zgodnie z poni偶szymi dobrymi praktykami:
- U偶ywaj API Temporal: API Temporal zapewnia ustandaryzowany i solidny spos贸b obs艂ugi konwersji kalendarzy. Unikaj u偶ywania do tego celu przestarza艂ych obiekt贸w `Date` z JavaScript.
- Okre艣laj kalendarze jawnie: Zawsze jawnie okre艣laj kalendarz podczas tworzenia obiekt贸w `Temporal.PlainDate`. Zapobiega to niejednoznaczno艣ci i zapewnia zastosowanie poprawnych regu艂 kalendarzowych.
- Wybierz odpowiedni膮 odmian臋 kalendarza islamskiego: Zrozum r贸偶nice mi臋dzy r贸偶nymi implementacjami kalendarza islamskiego i wybierz t臋, kt贸ra jest najbardziej odpowiednia dla Twojego przypadku u偶ycia.
- U偶ywaj internacjonalizacji (i18n): Wykorzystaj API `Intl.DateTimeFormat` do formatowania dat w spos贸b uwzgl臋dniaj膮cy ustawienia regionalne.
- Wdr贸偶 obs艂ug臋 b艂臋d贸w: Wdr贸偶 solidn膮 obs艂ug臋 b艂臋d贸w, aby wy艂apywa膰 nieprawid艂owe nazwy kalendarzy, formaty dat i inne potencjalne problemy.
- Testuj dok艂adnie: Testuj sw贸j kod z r贸偶nymi datami i lokalizacjami, aby zapewni膰 dok艂adno艣膰 i kompatybilno艣膰.
- B膮d藕 na bie偶膮co: API Temporal wci膮偶 ewoluuje. B膮d藕 na bie偶膮co z najnowszymi specyfikacjami i implementacjami w przegl膮darkach.
Podsumowanie
API Temporal w JavaScript rewolucjonizuje spos贸b, w jaki obchodzimy si臋 z datami i kalendarzami, zapewniaj膮c pot臋偶ny i ustandaryzowany spos贸b na mapowanie dat mi臋dzy kalendarzami. Rozumiej膮c niuanse r贸偶nych system贸w kalendarzowych i efektywnie wykorzystuj膮c API Temporal, programi艣ci mog膮 tworzy膰 aplikacje 艣wiadome globalnie, kt贸re odpowiadaj膮 na r贸偶norodne potrzeby kulturowe i religijne. Wykorzystaj API Temporal, aby tworzy膰 bardziej inkluzywne i dok艂adne rozwi膮zania do obs艂ugi dat w swoich projektach.
Ten przewodnik przedstawi艂 kompleksowy przegl膮d konwersji kalendarzy za pomoc膮 API Temporal w JavaScript. Pami臋taj, aby konsultowa膰 si臋 z oficjaln膮 dokumentacj膮 API Temporal w celu uzyskania najbardziej aktualnych informacji i szczeg贸艂owych specyfikacji.