Rap mandum jeunèh aplikasi nyang geutuléh lam JavaScript meubut ngon watèë atawa tanggai lam padum-padum boh kapasitas. Bak awai, nyoe teubatah bak API Date nyang ka na lam API. API nyoe na fungsi dasar, tapi cukop teubatah lam peu nyang jeut jipeubuet. Pustaka pihak keu lhee lagee Moment.js, ngon API nyang na lam dudoe lagee API Intl ngon API Temporal baroe, meutamah fleksibilitas nyang jioh leubeh rayeuk keu buet ngon watee ngon tanggai. Bangkit Dan Rhet Momen.js . Moment.js nakeuh saboh pustaka JavaScript ngon utilitas nyang that meukuasa keu buet ngon watee ngon tanggai. Nyoe meunan cit fitur-fitur nyang gadôh nibak API Date dasar, lagèe manipulasi zona watèe, ngon geupeugot le operasi umum leubeh sederhana. Moment pih na fungsi keu format tanggai ngon watee. Nyan jeuet keu saboh pustaka nyang le that geungui lam le aplikasi nyang meulaén-laén. Teuman Moment pih na bagian masalah. Nyoe saboh perpustakaan nyang rayeuk, dan jeut meutamah signifikan keu ukuran bundel saboh aplikasi. Kareuna perpustakaan hana meudukong tree shaking (fitur bundlers modern nyang jeuet geupeugadeh bagian-bagian perpustakaan nyang hana dipakek), mandum perpustakaan Moment jitamong bah pih droeneuh mantong neupakek saboh atawa dua fungsi jih. Masalah laen ngon Moment nakeuh fakta bahwa benda-benda nyang jipeugot nyan jeut keu mutable. Meukheun fungsi-fungsi tertentu bak objek Moment na efek samping dan memutasi nilai objek nyan. Nyoe jeut keu seubab na tingkah laku atawa bug nyang hana teuduga. Bak thôn 2020, ureuëng peumeurèntah Moment geucok keuputosan keu geupeutamong perpustakaan nyan lam mode peumeurèntah. Hana pengembangan fitur baro nyang teungoh dipeugot, dan awak peumeurèntah geusarankan bèk geungui keu proyek-proyek baro. Na perpustakaan tanggal JavaScript laen, lagee date-fns, tapi na pemain baro di kota, API yang dibangun langsong lam JavaScript: Temporal. Nyoe standar baro nyang peunoh lubang-lubang API Tanggal asli seureuta menyelesaikan padum-padum boh keterbatasan nyang diteumee lam Moment dan perpustakaan laen. Peue Nyang Seumentara? Temporal nakeuh saboh API watèe ngon tanggai barô nyang teungoh geutamah lam standar ECMAScript, nyang geubri definasi keu JavaScript moderen. Bak buleuen Maret 20266, ka troh u Tahap 4 nibak proses TC39 (panitia nyang geu-awasi proposal ngon tambahan keu basa JavaScript), ngon akan geupeutamong lam versi spesifikasi ECMAScript nyang akan teuka. Ka lheueh geupeujak bak padum-padum boh browser: Chrome 144+ ngon Firefox 139+, ngon Safari geuharapkan hana trep le. Saboh polyfill pih na keu browser nyang hana jidukung ngon Node.js. API Temporal jipeugot objek nyang, umum jih, mewakili momen lam watee. Nyoe jeuet keu stempel full-time ngon tanggai lam zona watee nyang ka geubri, atawa jeuet keu contoh generik watee “jam binteh” hana informasi zona watee atawa tanggai. Padum-padum boh fitur utama Temporal nakeuh:
Watèë deungon atawa hana tanggai.Saboh objek Temporal jeuët geuwakili watèë nyang ka teupeuteuntée bak tanggai nyang ka teupeuteuntée, atawa watèe nyang hana informasi tanggai. Saboh tanggai tertentu, hana watee, jeut cit diwakili. Dukongan zona watee.Objek temporal sepenuh jih sadar zona watee dan jeut diubah di zona watee nyang berbeda. Moment meudukong zona watee, cit, tapi nyan peureulee perpustakaan moment-zona watee tambahan. Immutability.Meunyo ka jipeugot saboh objek Temporal, hana jeuet geu ubah. Aritmatika watee atawa konversi zona watee hana meuubah objek nyang mendasari jih. Seubalek jih, awak nyan jipeuhase saboh objek Temporal baro. 1-based indexing.Saboh sumber umum bug ngon API Tanggal (meunan cit ngon Moment) nakeuh buleuen-buleuen nol-indeks. Njoë meumakna buleuën Januari nakeuh buleuën 0, kon buleuën 1 lagèë njang geutanjoë bandum meuphom dalam hudép nyata. Temporal memperbaiki nyo deungen menggunakan indeksasi berbasis 1 — Januari adalah buleun 1. Nyan ka ji peugot lam browser.Kareuna Temporal nakeuh API lam browser nyan keudroe, hana ji tamah sapeu keu ukuran bundel aplikasi droeneuh.
Penteng cit ta teupeu bahwa API Tanggal hana akan meu’ulang. Seudangkan Temporal geugantoë API nyoe, hana geubôh atawa geubôh. Le that aplikasi nyang akan putôh meunyo browser tiba-tiba geupeugadeh API Tanggal. Namun, cit ingat bahwa Moment jinoe ka geuanggap proyek legacy lam mode pemeliharaan. Lam artikel nyang laen, tanyoe akan takalon padum-padum boh “resep” untuk ta migrasi kode berbasis Moment keu API Temporal baro. Mari ta mulai refaktor! Peugot Objek Tanggai Dan Wate . Sigohlom tanyoe jeuet ta manipulasi tanggai ngon watee, tanyoe haroih tapeugot objek nyang mewakili jih. Keu peugot objek Moment nyang mewakili tanggai ngon watee jinoe, pakek fungsi moment. const jinoe = saat (); konsol.log (jinoe); // Momen<12/02/2026 21:26:29-05:00>
Objek nyoe jinoe jeuet ta format atawa ta manipulasi lagee nyang peureulee.
// meuubah keu UTC . //peringatan: Nyoe meumutasi objek Moment dan geupeuduek lam mode UTC! konsol.log (jinoe.utc ()); // Momen<12/02/2026 02:26:29Z>
// cetak string nyang ka geuformat - perhatikan bahwa jinoe ka geupake watee UTC . konsol.log (jinoe.format ('JM/KH/THKHH:mm:ss a')); // 19/02/2026 poh 02:27:07 WIB
Hal kunci nyang haroh diingat teuntang Moment nakeuh bahwa saboh objek Moment sabee na informasi teuntang watee ngon tanggai. Meunyo droeneuh mantong peureulee neukeurija ngon informasi watee, nyoe biasa jih hana masalah, tapi jeut keu seubab tingkah laku nyang hana terduga lam situasi lagee Wate Musim Suum atawa thon kabisat, dipat tanggai jeut na efek bak perhitungan watee. Temporal leubeh fleksibel. Droeneuh jeuet neupeugot saboh objek nyang mewakili tanggai ngon watee jinoe deungon neupeugot saboh objek Temporal.Instant. Nyoë meuwakili saboh titék watèë nyang geupeuteuntèë lé watèë sejak “zaman” (teungoh malam UTC bak 1 Januari 1970). Temporal jeut merujuk saat nyo dalam wate deungen presisi tingkat nanodetik. const jinoe = Sementara.Jinoe.instan ();
// kalon nanodetik mentah sejak jamen . konsol.log (jinoe.zamanNanodetik); // 177146634261200000n
// format keu UTC . konsol.log (jinoe.keuRantai ()); // 12.02.2026 01:55:27.844Z
// format keu zona watee tertentu . konsol.log (jinoe.keuString ({ZonaWatee: 'Amerika/New_York' })); // 2026-02-18T20:56:57.905-05:00
Temporal.Objek instan pih jeuet tapeugot keu watee ngon tanggai tertentu ngon tapeuguna metode from static.
const myInstan = Sementara.Instan.dari ('10:00-05:00');
// Peuformat instan lam zona watee lokal. Perhatikan bahwa nyoe hanya mengontrol . // format jih - hana ji mutasi objek lagee moment.utc. konsol.log (Instan.keuString ({ Zona watee: 'Amerika / New_York' })); // 2026-02-18T21:10:00-05:00 uroe raya
Droeneuh jeuet neupeugot cit jeunèh objek Temporal la'én, lagèe:
Temporal.TanggalBiasa: Tanggai nyang hana informasi watee. Temporal.Watee Biasa: Saboh watee nyang hana informasi tanggai. Temporal.ZonedTanggalWaktu: Saboh tanggai ngon watee lam zona watee tertentu.
Maséng-maséng nibak nyan na metode from nyang jeuet geukheun ngon saboh objek nyang geupeuteuntèe tanggai ngon/atau watèe, atawa string tanggai keu geuparse. // Cuma tanggal . const uroe nyoe = Sementara.TanggalPolos.dari ({ thôn: 2026, 2026. buleuen: 2, // catatan kamoe teungoh pakek 2 keu Februari 2019. uroe: 18 }); konsol.log (uroe nyoe.keuRantai ()); // 18 uroë 02 uroë 2026
// Cuma saboh watee . const Watee makan siang = Sementara.WateeBiasa.dari ({ jeum: 12 }); konsol.log (waktu makan siang.keuString ()); // 12:00:00 WIB
// Saboh tanggai ngon watee di zona watee Timu AS . const dueBak = Sementara.ZonaTanggalWatee.dari ({ Zona watee: 'Amerika/New_York', thôn: 2026, 2026. buleuen: 3, uroe: 1, jeum: 12, minet: 0, keudua: 0 }); konsol.log (seubabBak.keuRantai ()); // 03-01-2026 [Amerika/New_York]
Meu-ukheue Kamoe ka kamoe cok peugot informasi tanggai ngon watee seucara programmatis. Jinoe ta kalon bak parsing. Parsing nakeuh salah saboh bideuëng dipat Moment leubèh fleksibel nibak API Temporal nyang ka na lam jih. Droeneuh jeuet neu parse string tanggal ngon neupasoe keu fungsi moment. Deungon saboh argumen, Moment geuharapkan string tanggai ISO, tapi droeneuh jeut neupakek format alternatif meunyo droeneuh neubri argumen keudua nyang neupeuteunte format tanggai nyang teungoh neupakek.
const isoTanggal = saat ('21/02/2026 poh 9:00:00'); constTanggai nyang ka geuformat = saat ('21/2/26 9:00:00', 'S/S/THN h:mm:ss');
konsol.log (Tanggal iso); // Momen<21/02-02-2026 poh 09:00-05:00>
konsol.log (Tanggal nyang ka geuformat); // Momen<21/02-02-2026 poh 09:00-05:00>
Dalam versi yeng lubeh tuha, Moment akan dipeuget teubakan yeng paleng get untuk meuparse string tanggal peu manteng yeng diformat seuwenang-wenang. Nyo jeut ji seubabkan hasee nyang hana jeut ji prediksi. Miseuëjih, peuë 02-03-2026 2 Februari atawa 3 Maret? Keu alasan nyoe, versi Moment nyang leubeh baroe geupeuleumah peringatan deprecation nyang menonjol meunyoe geukheun hana string tanggal nyang geuformat ISO (kecuali argumen keudua ngon format nyang geukeuneuk cit geubri). Temporal hanya akan geuparse string tanggal nyang ka geuformat khusus. String nyan harôih sesuai ngon format ISO 8601 atawa ekstensi jih, RFC 9557. Meunyo string tanggai nyang hana sesuai geupeusampoe keu metode dari, Temporal akan geubôh RangeError.
// Meungui string tanggai RFC 9557 . const Tanggal lôn = Seumentara.Instan.dari ('Amerika/New_York]'); konsol.log (Tanggal lôn. keuString ({ Zona Watèë: 'Amerika / Barô_York' })); // 21.02.2026 poh 09:00-05:00
// Meungui string tanggai nyang hana teupeu . const Tanggal laen = Sementara.Instan.dari ('21/2/26 9:00:00'); // RangeError: Kesalahan sementara: Karakter hana sah watee geuparse nilai thon.
Persyaratan nyang teupat nibak string tanggal nyan meugantung bak jeunèh objek Temporal nyang gata peugot. Lam contoh di ateuh, Temporal.Instant peureulee ISO nyang lengkap .8601 atawa RFC 9557 string tanggai nyang neupeuteuntée tanggai ngon watèe ngon offset zona watèe, tapi droeneuh jeuet neupeugöt cit objek PlainDate atawa PlainTime ngon neungui mantong himpunan bagian dari format tanggai. constTanggal lôn = Sementara.TanggalPolos.dari ('21-02-02-2026'); konsol.log (Tanggal lôn. keu Rantai ()); // 21 uroë 02 uroë 2026
const Watèë ulôn = Watèë.Watéë.dari ('09:00:00'); konsol.log (Watee lon. keu Rantai ()); // 09:00:00
Cit neukalön bahwa string-string nyoe mantong harôih meunurot format nyang geuharapkan, atawa keusalahan akan geubôh.
// Meungui string watee nyang hana sesuai. Nyoe mandum akan ji buang RangeError. Seumentara.Watee.dari ('9:00'); Seumentara.Watee.dari ('9:00:00 WIB');
Tip pro: Penanganan string non-ISOKareuna Temporal geuprioritaskan keandalan, jih hana akan mencoba menebak format string lagee 02-01-2026. Meunyo sumber data droeneuh neungui string lagee nyan, droeneuh peureulee neupeugot padum-padum boh manipulasi string keu neuatoe lom nilai-nilai jeut keu string ISO lagee 2026-02-01 sigohlom neucuba neupakek ngon Temporal.
Peuformat Meunyo ka na objek Moment atawa Temporal, mungken droeneuh akan neutem ubah jeut keu string nyang ka neuformat bak saboh watee. Nyoe saboh contoh dimana Moment agak leubeh terse. Droeneuh neukheun metode format objek ngon string token nyang neugamba format tanggal nyang neukeuneuk. const tanggal = saat ();
konsol.log (tanggai.format ('BU/U/UU')); // 22/02/2026
konsol.log (tanggal.format ('MMMM Peugot TAHUN, jam: mm:ss a')); // 22 uroë buleuën 2 thôn 2026, poh 8:18:30 WIB
Di sisi laen, Temporal geuharuskan droeneuh beu leubeh verbose bacut. Objek temporal, lagee Instant, na metode toLocaleString nyang jiteurimong meubagoe opsi format nyang jiteuntèe seubagoe properti saboh objek.
const tanggal = Sementara.Jinoe.instan ();
// hana argumen, tanyoe akan ta teume format default keu lokal saat nyoe . konsol.log (tanggal.keuStringLokal ()); // 22/2/2026, 20:23:36 (deungon asumsi lokal en-AS)
// lewatkan opsi format untuk peugot string format khusus . konsol.log (tanggai.keuStringLokal ('bahasa-AS', { buleuen: 'panyang', . uroe: 'angka', . thôn: 'angka', . jam: '2-angka', . minit: '2-angka'. })); // 22 Februari 2026 poh 20:23 WIB
// hanya lewat bidang nyang droeneuh galak lam string format . konsol.log (tanggai.keuStringLokal ('bahasa-AS', { buleuen: 'singkat', . uroe: 'angka'. })); // 22 Feb 2019
Peuformat tanggai seumentara seubeutoi jih geungui API Intl.DateTimeFormat (nyang ka na lam browser modern) di miyup kap. Nyan beurarti droeneuh jeut neupeugot saboh objek DateTimeFormat nyang jeut neupakek lom ngon opsi format khusus droeneuh, lheuh nyan neupasoe objek Temporal keu metode format jih. Kareuna nyan, hana jidukung format tanggal khusus lagee Moment. Meunyo droeneuh peureulee sapeue-sapeue lagee 'Q1 2026' atawa format khusus laen, droeneuh mungken peureulee padum-padum boh kode format tanggal khusus atawa jangkauan keu perpustakaan pihak keu lhee. const pemformat = baroe Intl.TanggalWateeFormat ('bahasa-AS', { buleuen: '2-angka', . uroe: '2-angka', . thon: 'angka'. });
const tanggal = Sementara.Jinoe.instan (); konsol.log (peuformat.peuformat (tanggal)); // 22/02/2026
Token format Moment leubeh mudah untuk dituleh, tapi hana ramah lokal. Format string “kode keras” hal-hal lagee urutan buleun/uroe. Keuntongan nibak tangui objek konfigurasi, lagee Temporal, nakeuh akan otomatis beradaptasi ngon lokal peu mantong nyang ka geubri dan tangui format nyang beutoi. const tanggal = Sementara.Jinoe.instan ();
const Pilihan format = { buleuen: 'angka', . uroe: 'angka', . thon: 'angka'. };
konsol.log (tanggai.keuStringLokal ('bahasa-AS', PilihanFormat)); // 22/2/2026
konsol.log (tanggai.keuStringLokal ('bah-GB', PilihanFormat)); // 22/02/2026
Peuhitongan tanggai Lam le aplikasi, droeneuh peureulee neupeugot padum-padum boh perhitungan bak saboh tanggai. Mungken droeneuh neuk tamah atawa neukureung satuan watee (uroe, jeum, detik, dan laen-laen). Miseuëjih, meunyoë droëneuh na tanggai jinoë, droëneuh mungkén neuk neupeuleumah bak ureuëng ngui tanggai 1 minggu nibak jinoë. Objek momen na metode lage meutamah ngen meukureng yeng meupeuget operasi nyo. Fungsi-fungsi nyoe jicok saboh nilai ngon saboh satuan, miseu jih: add(7, 'days'). Saboh perbedaan nyang that peunteng antara Moment ngon Temporal, kiban pih, nakeuh watee tapeubuet hitongan tanggai nyoe, objek nyang mendasari jih dimodifikasi ngon nilai asli jih gadoh. const jinoe = saat ();
konsol.log (jinoe); // Momen<2026-02-02-2026 poh 36-05.00>
const Minggu ukeu = jinoe.tamah (7, 'uroe'); konsol.log (Minggu ukeu); // Momen<03/03/2026 poh 20:36-05:00>
// Gotcha - benda asli ka geu mutasi . konsol.log (jinoe); // Momen<2026-03-03-20:08:36-05:00>
Mangat bek gadoh tanggal asli, jeut neu panggil clone bak objek Moment untuk neu peugot copy. const jinoe= siat (); const Minggu ukeu = jinoe.klon ().tamah (7, 'uroe');
konsol.log (jinoe); // Momen<2026-02-02-2026 poh 12:55-05:00>
konsol.log (Minggu ukeu); // Momen<2026-03-03-20:55-05:00>
Di sisi laen, benda-benda Temporal hana meu ubah. Meunyo ka lheuh tapeugot saboh objek lagee Instant, PlainDate, dan laen-laen, nilai objek nyan hana akan pernah meu ubah. Objek temporal pih na metode tamah ngon kureung. Temporal nakeuh bacut picky teuntang unit watee pat nyang jeut ditambahkan keu jenis objek pat. Miseuëjih, droëneuh hana jeuët neutamah uroë keu Instant:
const jinoe = Sementara.Jinoe.instan (); const Minggu ukeu = jinoe.tamah ({ uroe: 7 }); // RangeError: Kesalahan watee: Satuan paleng rayeuk hana jeuet keu satuan tanggai .
Nyoe kareuna objek Instan mewakili titek watee tertentu lam UTC dan agnostik kalender. Kareuna panyang siuroe jeuet meu ubah meunurot aturan zona watee lagee Daylight Saving Time, perhitungan nyoe hana na bak Instant. Teuma, droeneuh jeuet neupeubuet operasi nyoe bak jeunèh objek la'én, lagèe PlainDateTime: const jinoe = Sementara.Jinoe.TanggalWateeISO (); konsol.log (jinoe. keu RantaiLokal ()); // 24/2/2026, 20:23:59 WIB
const Minggu ukeu = jinoe.tamah ({ uroe: 7 });
// Perhatikan bahwa PlainDateTime asli teutap hana meu ubah . konsol.log (jinoe. keu RantaiLokal ()); // 24/2/2026, 20:23:59 WIB
konsol.log (Minggu ukeu. keu RantaiLokal ()); // 3/3/2026, 20:23:59 WIB
Jeut cit neukira padum watee antara dua boh objek Moment atawa Temporal. Deungon fungsi diff Moment, droeneuh peureulee neuseudia saboh unit keu granularitas, meunyo hana akan neubri pulang perbedaan lam milidetik. const tanggai1 = saat ('21/2026 poh 9:00:00'); const tanggai2 = saat ('10:30:00');
konsol.log (tanggal2.beda (tanggal1)); // 9180000
konsol.log (tanggal2.beda (tanggal1, 'uroe')); // 1
Keu peugot nyoe ngon objek Temporal, droeneuh jeuet neupasoe objek Temporal laen keu metode until atawa since jih. Nyoe geubri pulang saboh objek Temporal.Duration nyang meuasoe informasi teuntang perbedaan watee. Objek Duration na properti keu tiep-tiep komponen perbedaan, dan cit jeut geuhasilkan string durasi ISO 8601 nyang mewakili perbedaan watee.
const tanggal1 = Sementara.TanggalPolosWatee.dari ('02-02-21T09:00:00'); const tanggal2 = Sementara.TanggalPolosWatee.dari ('2026-02-22T10:30:00');
// largestUnit neupeuteuntée satuan watèe nyang paléng rayeuk keu neuwakili . // lam hitongan durasi . const diff = tanggal2.sejak (tanggal1, { Satuan terbesar: 'uroe' });
konsol.log (beda.uroe); // 1
konsol.log (beda.jam); // 1
konsol.log (beda. menit); // 30
konsol.log (beda.keuRantai ()); // p1dt1h30m // (Rantai durasi ISO 8601: 1 uroë, 1 jeuëm, 30 minèt)
Meubandéng Tanggai Ngon Watèë . Moment ngon Temporal bandua nyan jeuet neubandeng tanggai ngon watee keu neuteupeue nyang teuka sigohlom nyang laen, tapi neucok pendekatan nyang beda ngon API. Moment geubri metode lagee isSeugolom, isSetelah, dan isSama untuk membandingkan dua objek Moment. const tanggai1 = saat ('21/2026 poh 9:00:00'); const tanggai2 = saat ('10:30:00');
konsol.log (tanggal1.adalahSebelum (tanggal2)); // beutoi
Temporal geupakek metode perbandingan statis untuk geupeugot perbandingan antara dua objek dari jenis yang sama. Nyan geubri pulang -1 meunyo tanggai phon teuka sigohlom tanggai keudua, 0 meunyo awaknyan saban, atawa 1 meunyo tanggai phon teuka lheuh tanggal keudua. Contoh di miyup nyoe nakeuh cara tapeubandeng dua boh objek PlainDate. Keudua argumen keu Temporal.TanggalBiasa.bandengkan wajeb objekTanggalBiasa.
const tanggal1 = Sementara.TanggalBiasa.dari({ thon: 2026, buleuen: 2, uroe: 24 }); const tanggal2 = Sementara.TanggalBiasa.dari({ thon: 2026, buleuen: 3, uroe: 24 });
// tanggal1 teuka sigohlom tanggal2, jadi -1. konsol.log (Sementara.TanggalPolos.bandengkan (tanggal1, tanggal2));
// Kesalahan meunyo tanyoe ta cuba peubandeng dua boh objek nyang beda jenis . konsol.log (Sementara.TanggalPolos.bandeng (tanggal1, Sementara.Jinoe.instan ())); // TypeError: Kesalahan sementara: Bidang PlainDate nyang hana sah nyang ka geubri.
Seucara khusus, nyoe meupeumudah keu meu-urut array objek Temporal seucara kronologis. // Saboh rangkaian objek Temporal.TanggalBiasa . konst tanggai = [ ... ];
// gunakan Temporal.TanggalBiasa.bandingkan sebagai fungsi pembanding . tanggal.sort (Sementara.TanggalPolos.bandengkan);
Konversi Zona Wate Perpustakaan Moment inti hana meudukong konversi zona watee. Meunyo droeneuh peureulee fungsi nyoe, droeneuh pih peureulee neupasang paket moment-timezone. Paket nyoe hana tree-goyang, dan kareuna nyan jeut meutamah signifikan keu ukuran bundel droeneuh. Meunyo ka lheuh neupasang moment-timezone, jeut neuubah objek Moment keu zona watee nyang beda ngon metode tz. Lage operasi Moment laen jih, nyo memutasi yeng mendasariobjek. // Deungon asumsi watee Timu AS . const jinoe = saat (); konsol.log (jinoe); // Momen<2026-02-02/2026-2020-05.00>
// Meutukar keu watee Pasifik. // Masa Timu asli ka gadoh. jinoe.tz ('Amerika/Amerika'); konsol.log (jinoe); // Momen<2026-02-2817:08:20-08:00>
Fungsi zona watee geubangun lam API Temporal watee geungui objek Temporal.ZonedDateTime. Objek-objek nyoe meunan cit metode withTimeZone nyang geubri pulang ZonedDateTime baro nyang mewakili momen watee nyang saban, tapi lam zona watee nyang ka geutentukan. // Sigo teuk, ngon asumsi watee Timu AS . const jinoe = Sementara.Jinoe.zonaTanggalWateeISO (); konsol.log (jinoe. keu RantaiLokal ()); // 28/2/2026, poh 20:12:02 WIB
// Meutukar keu watee Pasifik . const jinoePasifik = jinoe.deungonZonaWatee ('Amerika/Los_Angeles'); konsol.log (jinoePasifik.keuLokalString ()); // 28/2/2026, poh 17:12:02 WIB
// Objek asli teutap hana meu ubah . konsol.log (jinoe. keu RantaiLokal ()); // 28/2/2026, poh 20:12:02 WIB
Catatan: Nilai-nilai nyang ka geuformat nyang geubri pulang le toLocaleString nakeuh, lagee nan jih, meugantung bak lokal. Kode sampel nyan geu kembangkan lam lokal en-US, jadi format jih lagee nyoe: 28/2/2026, 17:12:02 PST. Bak lokal laen, nyoe mungken beda. Miseuëjih, lam lokal en-GB, droëneuh akan neuteumeung sapeuë lagèë 28/2/2026, 17:12:02 GMT-8. Saboh Refaktoring donya nyata Miseu jih geutanyoe teungoh tapeugot saboh aplikasi keu tapeugot jadwal acara di mandum zona watee. Bagian dari aplikasi nyoe nakeuh saboh fungsi, getEventTimes, nyang jicok string ISO 8601 nyang mewakili watee ngon tanggai acara, zona watee lokal, ngon zona watee target. Fungsi nyan jipeugot string watee ngon tanggai nyang ka geuformat keu acara di bandua zona watee. Meunyo fungsi nyan geubri string input nyang kon string watee/tanggal nyang sah, fungsi nyan akan ji lemparkan error. Nyoe keuh implementasi asli, pakek Moment (cit peureulee pakek paket momen-zona watee).
import momen dari 'momen-zona watee';
fungsi getWatePeristiwa (inputString, ZonaWate pengguna, ZonaWate sasaran) { const Format watee = 'MMM D, THOH, h:mm:ss saboh z';
// 1. Peugot momen awai lam zona watee ureueng ngui . const Wate keujadian = saat.tz ( string masukan, Momen.ISO_8601, // Meuharap saboh string ISO 8601 beutoi, // Parsing nyang ketat . ZonaWate pengguna );
// Buang kesalahan jika inputString hana mewakili tanggal yang sah . meunyo (! watee peristiwa. sah ()) { throw baroe Kesalahan ('Input tanggai/waktu hana sah'); }
// 2. Hitong watee nyang ka geutargetkan . // KRITIS: Geutanyoe haroih ta klon, atawa 'eventTime' meu ubah keu siumu masa! const Wate Wate sasaran = Wate Wate peristiwa.klon ().tz (ZonaWate sasaran);
kembalikan { lokal: acaraWatee.format (FormatWatee), sasaran: sasaranWatee.format (FormatWatee), }; }
const jadwal = getWateePeristiwa ( '15:00-05:00 uroë 2026', 'Amerika/Baru_York', 'Eropa/London', 1999. );
konsol.log (jadwal.lokal); // 5 Maret 2026, poh 15:00 WIB EST
konsol.log (jadwal.sasaran); // 5 Maret 2026, poh 8:00:00 WIB GMT
Lam contoh nyoe, kamoe meupakek format tanggal nyang diharapkan ISO 8601, nyang membantu dibangun lam Moment. Kamoe pih kamoe pakek parsing nyang ketat, nyang berarti Moment hana akan mencoba menebak ngon string tanggal nyang hana sesuai ngon format. Meunyo string tanggal non-ISO dipeuhah, akan meuhase objek tanggal hana sah, dan tanyoe ta boh error. Implementasi Temporal deuh jih saban, tapi na padum-padum boh perbedaan kunci.
fungsi getWatePeristiwa (inputString, ZonaWate pengguna, ZonaWate sasaran) { // 1. Taparse input langsong jeut keu Instant, lheuh nyan tapeugot . // saboh ZonaTanggalWaktu lam zona pengguna. const instan = Sementara.Instan.dari (StringMasukan); const WateePeristiwa = instan.keuZonaTanggalWateeISO (ZonaWateepengguna);
// 2. Meuubah keu zona sasaran . // Nyoe otomatis geubri pulang objek BARO; 'Wateeperistiwa' ka aman. const targetWate = acaraWate.deungonZonaWate (ZonaWate target);
// 3. Peugot format ngon Intl (nyang na lam) . pilihan const = { thôn: 'angka', . buleuen: 'singkat', . uroe: 'angka', . jam: 'angka', . minit: '2-angka', . keudua: '2-angka', . NanZonawaktu: 'singkat'. };
kembalikan { lokal: watee peristiwa.keuStringLokal (navigator.bahasa, pilihan), target: targetWate.keuLokalString (navigator.bahasa, pilihan) }; }
const jadwal = getWateePeristiwa ( '15:00-05:00 uroë 2026', 'Amerika/Baru_York', 'Eropa/London', 2019. );
konsol.log (jadwal.lokal); // 5 Maret 2026, poh 15:00 WIB
konsol.log (jadwal.sasaran); // 5 Maret 2026, poh 20.00 WIB GMT
Deungon Moment, geutanyoe haroh tapeuteunte secara eksplisit string format keu string tanggal nyang dihasekan. Peuë mantong teumpat atawa lokal ureuëng ngui, watèë acara akan sabeë geuformat seubagoë Mar 5, 2026, 3:00:00WIB EST. Meunan cit, geutanyoe hana payah ta boh pengecualian secara eksplisit. Meunyo string nyang hana sah geupeusampoe keu Temporal.Instant.from, Temporal akan geubôh pengecualian keu geutanyoe. Saboh hai nyang peureulee ta teupeu nakeuh bah pih ngon parsing nyang ketat, versi Moment mantong leubeh leumoh. Temporal peureulee offset zona watee bak ujong string. Droeneuh pih haroih neuteupeu bahwa kareuna kamoe tangui navigator.language, kode nyoe hanya akan berjalan lam lingkungan browser, kareuna navigator hana didefinisikan lam lingkungan Node.js. Implementasi Temporal geungui lokal browser jinoe (navigator.bahasa), sehingga pengguna akan otomatis meurumpok watee peristiwa nyang diformat lam format watee lokal awak nyan. Bak lokal en-AS, nyoe nakeuh tanggai 5 Maret 2026, poh 15:00:00 WIB EST. Teuma meunyo ureueng ngui nyan na di London, miseuëjih, watèë acara akan geuformat 5 Mar 2026, poh 15:00:00 GMT-5. Ringkasan
Tindakan Momen.js Seumentara Watèë jinoë saat () Sementara.Jinoe.dizonaTanggalWateeISO () Meu-ukheue ISO saat (str) Sementara.Instan.dari (str) Tambah watee .tamah (7, 'uroe') (meumutasi) .tamah ({ uroe: 7 }) (objek baro) Beda .diff(laen, 'jam') .sejak(laen).jam Zona watee .tz('Zona/Nan') .deungonZonaWate('Zona/Nan')
Bak pandangan phon, perbedaan jih mungken bacut beda (dan lam kasus Temporal, kadang leubeh verbose dan leubeh ketat) sintaks, tapi na padum-padum boh keuntungan kunci keu pakek Temporal ateuh Moment.js:
Leubeh jeulaih meuarti leubeh kureung kejutan ngon bug nyang hana dimaksud. Momen mungken deuh leubeh leumoh, tapi nyan melibatkan “tebak-tebakan,” nyang kadang-kadang jeut meuhasekan tanggal nyang hana beutoi. Meunyo neubri Temporal sapeue-sapeue nyang hana sah, nyan jibôh error. Meunyo kode nyan meujalan, ka neuteupeu droeneuh ka na tanggal nyang sah. Momen jeut meutamah ukuran nyang signifikan keu bundel aplikasi, khusus jih meunyo droeneuh neupakek paket momen-waktu. Temporal hana meutamah sapeue (meunyo ka jikirém lam browser target droeneuh). Immutabilitas geubri keupercayaan bahwa droeneuh hana akan pernah gadoh atawa neutimpa data watee neupeugot konversi ngon operasi tanggal. Representasi watee nyang meubeda (Instan, PlainDateTime, ZonedDateTime) meugantung bak syarat droeneuh, di pat Moment sabee nakeuh pembungkus di sekitar cap watee UTC. Temporal geungui API Intl keu format tanggai, nyang meuarti droeneuh jeuet neuformat lokal-aware hana payah neupeuteuntée token secara eksplisit.
Catatan Bak Polyfill . Lagee nyang ka geukheun dilee, na polifill Temporal nyang na, geubagi-bagi seubagoe paket npm nyang geuboh nan @js-temporal/polifill. Meunyo droeneuh neuk pakek Temporal uroe nyoe, droeneuh peureulee polyfill nyoe untuk neudukung browser lagee Safari nyang gohlom neukirém API. Haba brok ngon nyoe nakeuh akan meutamah ukuran bundle droeneuh. Haba nyang jroh nakeuh mantong meutamah signifikan kureung dari momen atawa momen-zona watee. Nyoe keuh perbandingan ukuran bundel lagee nyang dilaporkan le Bundlephobia.com, saboh situs web nyang menyajikan informasi teuntang ukuran paket npm (klik bak tiep-tiep nan paket untuk neu kalon analisis Bundlephobia):
Paket Dipeukureueng Dipeukureueng & gzip @js-siat/poliisi 154,1 kb 44,1 kB siat 294,4 kb 75,4 kB zona watee saat 1 MB 114,2 kb
Polyfill cit seucara historis na padum boh masalah kinerja di sekitar penggunaan memori, ngon bak watee teumuleh, nyan dianggap lam keadaan alpha. Kareuna nyan, mungken droeneuh hana neutem pakek lam produksi sampoe troh bak keadaan nyang leubeh dewasa. Haba jroh laen jih nakeuh mudah-mudahan polyfill nyan hana le dipeureulee le (kecuali droeneuh peureulee neudukung browser tuha, teunte). Bak watèe teumuléh nyoe, Temporal ka jikirém lam Chrome, Edge, ngon Firefox. Golom that siap lam Safari lom, meskipun deuh jih ka na ngon bendera runtime bak Technology Preview terbaru.