A bɛ se ka fɔ ko porogaramu suguya o suguya sɛbɛnnen bɛ JavaScript la, o bɛ baara kɛ ni waatiw walima donw ye cogo dɔ la. A daminɛ na, o tun bɛ dan Date API jɔlen ma. Nin API in kɔnɔ, baarakɛcogo jɔnjɔnw bɛ yen, nka a bɛ se ka min kɛ, a dan ye kosɛbɛ. Mɔgɔ sabanan ka gafemarayɔrɔw i n’a fɔ Moment.js, ani kɔfɛ API minnu bɛ don a kɔnɔ i n’a fɔ Intl APIw ani Temporal API kura, olu bɛ fɛn caman fara baarakɛcogo kan ni waatiw ni donw ye. Moment Ka wuli Ni Bin.js Moment.js ye JavaScript gafemarayɔrɔ ye min nafa ka bon kosɛbɛ walasa ka baara kɛ ni waatiw ni donw ye. A bɛ fɛn minnu tununna Date API jɔnjɔn kɔnɔ, i n’a fɔ waatibolodacogo sɛgɛsɛgɛli, wa a bɛ baara caman kɛ minnu bɛ kɛ tuma caman na, olu bɛ nɔgɔya. Moment fana bɛ baara dɔw Kɛ minnu bɛ Kɛ ka donw ni waatiw sɛbɛnni Kɛ. A kɛra gafemarayɔrɔ ye min bɛ baara kɛ kosɛbɛ baarakɛcogo caman na. Nka, Moment fana y’a niyɔrɔ sɔrɔ koɲɛw la. O ye gafemarayɔrɔba ye, wa a bɛ se ka dɔ fara kosɛbɛ application dɔ ka bundle hakɛ kan. Ikomi gafemarayɔrɔ tɛ jiriw yɛrɛyɛrɛ dɛmɛ (bi bɔrɔw ka fɛn dɔ min bɛ se ka gafemarayɔrɔw yɔrɔ dɔw bɔ yen minnu ma baara kɛ), Moment gafemarayɔrɔ bɛɛ bɛ don a kɔnɔ hali n’i bɛ baara kɛ n’a ka baarakɛcogo kelen walima fila dɔrɔn ye. Ko wɛrɛ min bɛ Moment kan o ye ko a bɛ fɛn minnu Dabɔ olu bɛ Se ka Yɛlɛma. Baara dɔw weleli Moment fɛn dɔ kan, o bɛ kɔlɔlɔw lase a ma wa a bɛ o fɛn nafa caman sɛmɛntiya. O bɛ se ka kɛ sababu ye ka kɛwalew walima fɛnɲɛnɛmaw bila mɔgɔ la minnu ma deli ka kɛ. San 2020, Moment ladonbagaw y’a latigɛ ka gafemarayɔrɔ in bila ladonni cogo la. Fɛn kura si tɛ ka kɛ, wa a ladonbagaw b’a fɔ ko i kana baara kɛ n’a ye porozɛ kuraw kama. JavaScript donw gafemarayɔrɔ wɛrɛw bɛ yen, i n’a fɔ date-fns, nka tulonkɛla kura dɔ bɛ dugu kɔnɔ, API min jɔlen bɛ JavaScript kɔnɔ k’a ɲɛsin: Temporal ma. O ye sariya kura ye min bɛ Date API fɔlɔ dingɛw fa ka fara dantigɛli dɔw ɲɛnabɔli kan minnu bɛ sɔrɔ Moment ni gafemarayɔrɔ wɛrɛw la. Waatibolodalen ye mun ye? Temporal ye waati ni don API kura ye min bɛ fara ECMAScript sariya kan, min bɛ bi JavaScript ɲɛfɔ. Kabini san 20266 marisikalo la, a sera TC39 taabolo dakun 4nan na (jɛkulu min bɛ laɲiniw ni faraliw kɔlɔsi JavaScript kan na), wa a bɛna don ECMAScript ɲɛfɔli sɛbɛn nata kɔnɔ. A Kɛra ‘navigatɛri caman na kaban: Chrome 144+ ani Firefox 139+, n’a y’a Sɔrɔ Safari bɛna tugu o kɔ yanni dɔɔnin cɛ. Polifill fana bɛ sɔrɔ navigatɔrɔw ni Node.js dɛmɛbaliw kama. Temporal API bɛ fɛnw Dabɔ minnu, a ka c’a la, waatiw bɛ waatiw Jira. Olu bɛ se ka kɛ waati dafalen ni don taamasiyɛnw ye waatibolodalen dɔ kɔnɔ, walima u bɛ se ka kɛ “kogo wagati” waati misali caman ye, waatibolodacogo walima don kunnafoni si tɛ minnu na. Temporal ka baara kunbaba dɔw ye:
Waati minnu bɛ ni donw ye walima minnu tɛ donw ye.Waatilama fɛn bɛ se ka waati kɛrɛnkɛrɛnnen dɔ jira don kɛrɛnkɛrɛnnen dɔ la, walima waati min tɛ don kunnafoni si sɔrɔ. Don kɛrɛnkɛrɛnnen dɔ, waati tɛ min na, o fana bɛ se ka jira. Waatibolodacogo dɛmɛ.Waatilafɛnw bɛ waatibolodacogo dɔn kosɛbɛ, wa u bɛ se ka wuli waatibolodacogo wɛrɛw kɔnɔ. Moment bɛ waatibolodalenw fana dɛmɛ, nka a bɛ waati-waati-yɔrɔw gafemarayɔrɔ wɛrɛw de wajibiya. Immutability.Ni Temporal fɛn dɔ dabɔra dɔrɔn, a tɛ se ka Changé. Waati jatebɔ walima waatibolodacogo caman tigɛli tɛ fɛn min bɛ a jukɔrɔ, o sɛmɛntiya. O nɔ na, u bɛ Temporal fɛn kura dɔ Bɔ. 1-based indexing.Bugw sɔrɔyɔrɔ min ka ca ni Date API ye (ani ni Moment fana ye) o ye ko kalow ye zeru-index ye. O kɔrɔ ye ko Zanwuyekalo ye kalo 0 ye, sanni kalo 1 ka kɛ i n’a fɔ an bɛɛ b’a faamu cogo min na ɲɛnamaya yɛrɛ kɔnɔ. Temporal bɛ o ɲɛnabɔ ni 1-based indexing ye — Zanwuyekalo ye kalo 1 ye. A bɛ don navigatɔrɔ kɔnɔ.Ikomi Temporal ye API ye navigatɔrɔ yɛrɛ kɔnɔ, a tɛ foyi fara i ka application (application) ka bundle hakɛ kan.
A nafa ka bon fana k’a dɔn ko Date API tɛ taa. Hali ni Temporal bɛ nin API in nɔ na, a tɛ bɔ yen walima a tɛ ban. Aplikasi caman tun bɛna tiɲɛ ni navigatɔrɔw ye Date API bɔ yɔrɔnin kelen. Nka, aw k’a to aw hakili la fana ko Moment bɛ jate sisan porozɛ kɔrɔlen ye ladonni cogo la. Barokun tɔ kɔnɔ, an bɛna “furakɛcogo” dɔw lajɛ walasa ka Moment-based code jiginni kɛ ka taa Temporal API kura kɔnɔ. An k’a daminɛ ka refactoring kɛ! Don Ni Waati Fɛnw Dabɔli Sani an ka se ka donw ni waatiw Labɛn, an ka kan ka fɛnw Dabɔ minnu b’u Jira. Walasa ka Moment fɛn dɔ Dabɔ min bɛ don ni waati jira sisan, baara Kɛ ni moment baarakɛcogo ye. const sisan = waati (); konsolɛ.log (sisan); // Waati<2026-02-18T21:26:29-05:00>
O fɛn in bɛ se ka labɛn sisan walima ka baara kɛ ni a ye i n’a fɔ a mago bɛ cogo min na.
// bεε bε bεn UTC ma //lasɔmini: O bɛ Moment fɛn caman sɛmɛntiya k’a bila UTC cogo la! konsolɛ.log (sisan.utc ()); // Waati<2026-02-19T02:26:29Z>
// sɛrɛkili sɛbɛnnen dɔ sɛbɛn - a kɔlɔsi ko a bɛ baara kɛ ni UTC waati ye sisan console.log (sisan.format ('MM / DD / YYYY hh: mm: ss a')); // 02/19/2026 02:27:07 sɔgɔma
Fɛn min ka kan ka to an hakili la Moment ko la, o ye ko Moment fɛn dɔ bɛ kunnafoni di waati ni don kan tuma bɛɛ. N’i mago bɛ baara kɛ ni waati kunnafoniw dɔrɔn ye, a ka c’a la, o tɛ baasi ye, nka a bɛ se ka kɛ sababu ye ka kɛwalew kɛ i ma miiri minnu na i n’a fɔ tilebɔ waati walima san camanba, yɔrɔ minnu na don bɛ se ka nɔ bila waati jatebɔw la. Waati ta fan fɛ, a bɛ se ka fɛn caman kɛ. I bɛ se ka fɛn dɔ da min bɛ don ni waati jira sisan ni i ye Temporal.Instant fɛn dɔ da. O bɛ waati dɔ jira min ɲɛfɔlen don waati fɛ kabini « waati » (su tilancɛ UTC san 1970 zanwuyekalo tile fɔlɔ). Temporal bɛ se ka nin yɔrɔnin in ɲɛfɔ waati kɔnɔ ni nanosecond-level precision ye. const sisan = Waati.Sisan.instant ();
// nanosekɔndi raw lajɛ kabini waati console.log (sisan.epochNanosekɔndi); // 1771466342612000000n
// cogoya min bɛ UTC kan konsolɛ.log (sisan.kaString ()); // 2026-02-19T01:55:27.844Z, Bamako, Mali
// cogoya min bɛ kɛ waatibolodacogo kɛrɛnkɛrɛnnen dɔ la console.log(now.toString({ waatibolo: 'Amerika/New_York' })); // 2026-02-18T20:56:57.905-05:00
Temporal.Instant fɛnw fana bɛ se ka dabɔ waati ni don kɛrɛnkɛrɛnnen dɔ kama ni baara kɛli ye ni from static fɛɛrɛ ye.
const myInstant = Waati.Instant.ka bɔ ('2026-02-18T21:10:00-05:00');
// Instant format kɛ sigida waatibolodacogo la. A kɔlɔsi ko o bɛ kunnafoni dɔrɔn de di // formatting - a tɛ fɛn in sɛmɛntiya i n'a fɔ moment.utc b'a kɛ cogo min na. console.log(myInstant.toString({ waatibolo: 'Amerika/New_York' })); // 2026-02-18T21:10:00-05:00
Aw bɛ se ka Temporal fɛn suguya wɛrɛw fana da, i n’a fɔ:
Temporal.PlainDate: Don min na waati kunnafoni tɛ yen. Temporal.PlainTime: Waati min kɔnɔ don kunnafoni tɛ. Temporal.ZonedDateTime: Don ni waati min bɛ waatibolo kɛrɛnkɛrɛnnen dɔ kɔnɔ.
Olu kelen-kelen bɛɛ bɛ ni from fɛɛrɛ ye min bɛ Se ka Weele ni fɛn ye min bɛ don ni/walima waati jira, walima don sɛrɛkili dɔ ka parse. // Date dɔrɔn de don const bi = Waati.Date.Date.ka bɔ({ san: san 2026, san 2026. kalo: 2, // kɔlɔsi an bɛ baara kɛ ni 2 ye feburuyekalo kama tile: 18 }); console.log (bi.ka se ka sɛrɛkili ()); // 2026-02-18 sàn
// Waati dɔ dɔrɔn de don const tilelafana waati = Waati.Waati gansan.ka bɔ({ lɛrɛ: 12 }); console.log (tilenbaliya waati.ka seString ma ()); // 12:00:00 waati
// Don ni waati min bɛ Ameriki kɔrɔnyanfan waatibolodalen na const dueAt = Waati.ZonedDateWaati.ka bɔ({ waatibolodalen: ‘Amerika/New_York’, san: san 2026, san 2026. kalo: 3, 2019. tile: 1, 2019. lɛrɛ: 12, 12. miniti: 0, 10. filanan : 0 }); konsolɛ.log (dueAt.ka sɛrɛkili ()); // 2026-03-01T12:00:00-05:00[Amerika/New_York]
Parsing (Parssing) ye An ye don ni waati kunnafoniw dabɔli porogaramuw ɲɛfɔ. Sisan an k’a lajɛ parsing (parsing) kan. Parsing ye yɔrɔ dɔ ye Moment bɛ Se ka 'yɔrɔ min na ka Tɛmɛ Temporal API jɔlen kan. I bɛ Se ka don sɛrɛkili dɔ Lajɛ n'i y'a Tɛmɛ waati baarakɛcogo la. Ni sɔsɔli kelen ye, Moment bɛ ISO don sɛrɛkili makɔnɔ, nka i bɛ se ka baara kɛ ni cogoya wɛrɛw ye n’i ye sɔsɔli filanan di min bɛ don cogoya jira min bɛ baara kɛ.
const isoDate = waati ('2026-02-21T09:00:00'); const formattedDate = waati ('21/21/26 9:00:00', 'M/D/YY h:mm:ss');
konsolɛ.log (isoDate); // Waati<2026-02-21T09:00:00-05:00>
console.log (Don min kɛra cogo la); // Waati<2026-02-21T09:00:00-05:00>
Fɔcogo kɔrɔw la, Moment tun bɛna jateminɛ ɲuman kɛ walasa ka don sɛrɛkili o sɛrɛkili labɛnna cogo la min bɛ kɛ ni a yɛrɛ sago ye. O bɛ se ka na ni nɔ ye min tɛ se ka fɔ ka ɲɛ. Misali la, 02-03-2026 ye Feburuyekalo tile 2 ye wa walima Marisikalo tile 3? O de kama, Moment bɔko kura bɛ lasɔmini dɔ jira min bɛ ye ka ɲɛsin fɛnw tiɲɛni ma ni a welera k’a sɔrɔ don sɛrɛkili ma ISO labɛn (fo ni sɔsɔli filanan ni cogoya ɲininen fana dira). Temporal bɛna don sɛrɛkili kɛrɛnkɛrɛnnen dɔ dɔrɔn de parse. O sɛrɛ ka kan ka bɛn ISO 8601 cogoya ma walima a ka farankan, RFC 9557. Ni don sɛrɛkili min tɛ bɛn, o tɛmɛna ka taa from fɛɛrɛ dɔ la, Temporal bɛna RangeError fili.
// Baara kɛ ni RFC 9557 don sɛrɛkili ye const myDate = Waati.Instant.from('2026-02-21T09:00:00-05:00[Amerika/New_York]'); console.log(myDate.toString({ waatibolo: 'Amerika/New_York' })); // 2026-02-21T09:00:00-05:00
// Baara kɛ ni don dɔnbali sɛrɛkili ye const don wɛrɛ = Waati.Instant.ka bɔ ('2/21/26 9:00:00'); // RangeError: Waati fili: Karamɔgɔ tiɲɛnen ka san nafa parsing.
Date sɛrɛkili ka wajibi tigitigiw bɛ Bɔ i bɛ Temporal fɛn sugu min Dabɔ. Misali min bɛ sanfɛ, Temporal.Instant bɛ ISO dafalen de wajibiya8601 walima RFC 9557 don sɛrɛkili min bɛ don ni waati jira ni waatibolodacogo sɛgɛsɛgɛli ye, nka i bɛ se fana ka PlainDate walima PlainTime fɛnw da ni don cogoya kulu fitinin dɔrɔn ye. const myDate = Waati.Don jɛlen.ka bɔ ('2026-02-21'); console.log (n ka don.ka se ka sɛrɛkili ()); // 2026-02-21 sàn
const myTime = Waati.Waati jɛlen.ka bɔ ('09:00:00'); console.log (n ka waati.ka seSɛri ma ()); // 09:00:00 waati
A kɔlɔsi ko nin sɛrɛkili ninnu ka kan ka bɛn hali bi cogoya makɔnɔnen ma, n’o tɛ fili dɔ bɛna fili.
// Baara kɛ ni waati sɛrɛkili ye min tɛ sariya labato. Ninnu bɛɛ bɛna RangeError dɔ fili. Waati.Waati jɛlen.ka bɔ ('9:00'); Waati.Waati gansan.ka bɔ ('9:00:00 AM');
Pro tip: Handling non-ISO stringsIkomi Temporal bɛ dannaya bila jɔyɔrɔ fɔlɔ la, a tɛna a ɲini ka sɛrɛkili dɔ cogoya jateminɛ i n’a fɔ 02-01-2026. Ni i ka kunnafonidilan bɛ baara Kɛ n’o sɛrɛkili suguw ye, i bɛna a ɲini ka sɛrɛkiliw sɛgɛsɛgɛli dɔw Kɛ walasa ka nafaw Labɛn kokura ka Kɛ ISO sɛrɛkili ye i n’a fɔ 2026-02-01 sanni i k’a ɲini ka baara Kɛ n’a ye ni Temporal ye.
Format (fɔcogo) kɛli Ni Moment walima Temporal fɛn dɔ b’i bolo, n’a sɔrɔla i b’a fɛ k’a sɛmɛntiya ka kɛ sɛrɛ ye min bɛ fɔ cogo la waati dɔ la. Nin ye misali ye min na Moment ka surun dɔɔnin. I bɛ fɛn in cogoya wele ni taamasiyɛnw ye minnu bɛ don cogoya ɲininen ɲɛfɔ. const don = waati ();
konsolɛ.log (don.format ('MM / DD / YYYY')); // 02/22/2026
console.log (don.format ('MMMM Do YYYY, h: mm: ss a')); // Feburuyekalo tile 22 san 2026, 20h18h30
Faan wɛrɛ fɛ, Temporal b’a ɲini i fɛ i ka kɛ kumakan fɔbaga ye dɔɔnin. Waati fɛnw, i n’a fɔ Instant, toLocaleString fɛɛrɛ bɛ u la min bɛ sɔn sɛbɛnnikɛcogo suguya caman ma minnu kofɔlen don i n’a fɔ fɛn dɔ nafa.
const don = Waati.Sisan.instant ();
// ni arguments tɛ, an bɛna default format sɔrɔ sisan locale la console.log (don.ka sigiyɔrɔmaSɔrɔ ()); // 2/22/2026, 20:23:36 (ka miiri ko yɔrɔ dɔ ye en-US ye)
// tɛmɛn formatting options kan walasa ka ladamu format string dɔ lawuli console.log(don.kaSɔrɔyɔrɔString('en-US', { kalo: 'janya', don: 'jatebla', . san : 'jatebla', . lɛrɛ : ‘2-jateden’, . miniti : 'jateden 2'. })); // Feburuyekalo tile 22, san 2026 nɛgɛ kanɲɛ 20h23
// i b'a fɛ foro minnu dɔrɔn de tɛmɛn format string kɔnɔ console.log(don.kaSɔrɔyɔrɔString('en-US', { kalo: 'kuma surun', . don: 'jatebla'. })); // Feburuyekalo tile 22
Waati-don-daɲɛ-sɛbɛnni bɛ baara Kɛ tiɲɛ na ni Intl.DateTimeFormat API ye (min bɛ Sɔrɔ nɔgɔya la kaban bi navigatɔrɔw la) 'kɔnɔ. O kɔrɔ ye ko i bɛ Se ka DateTimeFormat fɛn dɔ Dabɔ min bɛ Se ka baara Kɛ kokura n’i ka ladamucogo suganditaw ye, o kɔ fɛ i bɛ Temporal fɛnw Tɛmɛ a ka fɔcogo fɛɛrɛ la. O de kosɔn, a tɛ donw cogoyaw ladamulenw dɛmɛ i n’a fɔ Moment b’a kɛ cogo min na. N’i mago bɛ fɛn dɔ la i n’a fɔ ‘Q1 2026’ walima sɛbɛnni kɛrɛnkɛrɛnnen wɛrɛw, i bɛ se ka kɛ i mago bɛ don sɛbɛnni kode dɔw la minnu bɛ i yɛrɛ di walima ka i bolo se mɔgɔ sabanan ka gafemarayɔrɔ ma. const formatter = kura Intl.DateWaatiFormat('en-US', { kalo : 'jateden 2', . don : 'jateden 2', . san : 'jatebla'. });
const don = Waati.Sisan.instant (); console.log (formatɛrɛ.fɔcogo (don)); // 02/22/2026
Moment’s formatting tokens sɛbɛnni ka nɔgɔn, nka u tɛ sigida-ko ye. O cogoya bɛ “kode gɛlɛn” fɛnw siri i n’a fɔ kalo/don sigicogo. Nafa min bɛ baara kɛ ni labɛnfɛn ye, i n’a fɔ Temporal b’a kɛ cogo min na, o ye ko a bɛna a yɛrɛ Labɛn yɔrɔ o yɔrɔ dilen na ani ka baara Kɛ ni cogoya ɲuman ye. const don = Waati.Sisan.instant ();
const formatSugandiliw = { kalo: 'jatebla', . don: 'jatebla', . san : 'jatebla'. };
console.log (don.ka yɔrɔString ('en-US', formatOptions)); // 2026 san tile 22
console.log (don.ka yɔrɔString ('en-GB', formatOptions)); // 22/02/2026. Bamako, Mali
Don jatebɔw Aplikasi caman na, i bɛna laban ka jatebɔ dɔw kɛ don dɔ la. Aw bɛ se ka waati hakɛw fara ɲɔgɔn kan walima ka u bɔ u la (tile, lɛrɛ, segin, a ɲɔgɔnnaw). Misali la, ni don min bɛ i bolo sisan, i bɛ se ka don jira baarakɛla la dɔgɔkun 1 kɔfɛ. Moment fɛnw bɛ ni fɛɛrɛw ye i n’a fɔ farali ni bɔli minnu bɛ o baara ninnu Kɛ. O baarakɛcogo ninnu bɛ nafa ni unit ta, misali la: add(7, ‘donw’). Nka, danfara min nafa ka bon kosɛbɛ Moment ni Temporal cɛ, o ye ko ni nin don jatebɔ ninnu bɛ Kɛ, fɛn min bɛ a jukɔrɔ, o bɛ Yɛlɛma, wa a nafa fɔlɔ bɛ Tɔnɔ. const sisan = waati ();
konsolɛ.log (sisan); // Waati<2026-02-24T20:08:36-05:00>
const dɔgɔkun nata = sisan.a fara (7, 'donw'); console.log(Dɔgɔkun nata); // Waati<2026-03-03T20:08:36-05:00>
// Gotcha - fɛn fɔlɔ in jiginna konsolɛ.log (sisan); // Waati<2026-03-03T20:08:36-05:00>
Walasa ka don fɔlɔ bɔnɛ, i bɛ se ka clone wele Moment fɛn kan walasa ka kopi dɔ da. const sisan= waati dɔ (); const dɔgɔkun nata = sisan.clone (). fara (7, 'donw');
konsolɛ.log (sisan); // Waati<2026-02-24T20:12:55-05:00>
console.log(Dɔgɔkun nata); // Waati<2026-03-03T20:12:55-05:00>
Faan wɛrɛ fɛ, Temporal fɛnw tɛ Se ka Yɛlɛma. Ni i ye fɛn dɔ Dabɔ i n’a fɔ Instant, PlainDate, ani a ɲɔgɔnnaw, o fɛn in nafa tɛna Changé abada. Waati-fɛnw fana bɛ ni farali ni bɔli fɛɛrɛw ye. Temporal bɛ picky dɔɔnin Kɛ waati hakɛ minnu bɛ Se ka Fàra fɛn suguya minnu kan. Misali la, i tɛ se ka tile dɔw fara Instant kan:
const sisan = Waati.Sisan.instant (); const dɔgɔkun nata = sisan.add({ tile: 7 }); // RangeError: Waati fili: Unit belebeleba tɛ se ka kɛ don unit ye
O bɛ Kɛ k’a sababu Kɛ Instant fɛnw bɛ waati kɛrɛnkɛrɛnnen dɔ Jira UTC kɔnɔ wa u bɛ kalandriya-dɔnniya. Ikomi tile janya bɛ Se ka Yɛlɛma ka Da waatibolodacogo sariyaw kan i n’a fɔ Tilebɔ waati, o jatebɔ in tɛ Kɛ Instant kan. Nka, aw bɛ se ka nin baara in kɛ fɛn suguya wɛrɛw kan, i n’a fɔ PlainDateTime: const sisan = Waati.Sisan.don jɛlenWaatiISO (); console.log (sisan.ka SigidaString ()); // 2/24/2026, 20h23:59 waati
const dɔgɔkun nata = sisan.add({ tile: 7 });
// A kɔlɔsi ko PlainDateTime fɔlɔ bɛ to a cogo la console.log (sisan.ka SigidaString ()); // 2/24/2026, 20h23:59 waati
console.log (Dɔgɔkun nata.ka yɔrɔSɔrɔ ()); // 3/3/2026, 20h23:59 waati
Aw bɛ se fana ka jatebɔ kɛ waati hakɛ min bɛ Moment walima Temporal fɛn fila ni ɲɔgɔn cɛ. Ni Moment’s diff function ye, i ka kan ka unit (yɔrɔ) dɔ Di granularity (granularity) ma, n’o tɛ a bɛ danfara segin milisekɔndi kɔnɔ. const don1 = waati('2026-02-21T09:00:00'); const don2 = waati ('2026-02-22T10:30:00');
console.log (don2.diff (don1)); // 91800000 ye
console.log(don2.diff(don1, 'donw')); // 1. Bamako, Mali
Walasa k’o Kɛ ni Temporal fɛn dɔ ye, i bɛ Se ka Temporal fɛn wɛrɛ Tɛmɛ a ka fo walima kabini fɛɛrɛw la. O bɛ Temporal.Duration fɛn dɔ segin min kɔnɔ kunnafoni bɛ sɔrɔ waati danfara kan. Duration fɛn in bɛ ni nafaw ye danfara yɔrɔ kelen-kelen bɛɛ la, wa fana a bɛ se ka ISO 8601 duration string dɔ lawuli min bɛ waati danfara jira.
const don1 = Waati.Don jɛlenWaati.ka bɔ ('2026-02-21T09:00:00'); const don2 = Waati.Don jɛlenWaati.ka bɔ ('2026-02-22T10:30:00');
// largestUnit bɛ waati hakɛba jira min ka kan ka jira // waati jatebɔ la const diff = don2.since(don1, { Unit belebeleba: 'don' });
konsolɛ.log (diff.donw); // 1. Bamako, Mali
konsolɛ.log (danfara.lɛrɛw); // 1. Bamako, Mali
konsolɛ.log (danfara.minitiw); // 30. Bamako, Mali
konsolɛ.log (danfara.ka sɛrɛkili ()); // P1DT1H30M ye // (ISO 8601 kuntaala sɛrɛkili: tile 1, lɛrɛ 1, miniti 30)
Donw Ni Waatiw Sanga ɲɔgɔn ma Moment ni Temporal fila bɛɛ b’a to i bɛ donw ni waatiw suma ɲɔgɔn na walasa k’a dɔn min bɛ na ka kɔn tɔ kelen ɲɛ, nka i bɛ fɛɛrɛ wɛrɛw ta ni API ye. Moment bɛ fɛɛrɛw Di i n’a fɔ isBefore, isAfter ani isSame walasa ka Moment fɛn fila suma ɲɔgɔn na. const don1 = waati('2026-02-21T09:00:00'); const don2 = waati ('2026-02-22T10:30:00');
console.log (don1.yeKa kɔn (don2)); // tiɲɛ don
Temporal bɛ baara Kɛ ni static compare method ye walasa ka fɛn fla ni ɲɔgɔn cɛ danfara Kɛ minnu suguya ye kelen ye. A bɛ -1 Lasegin ni don fɔlɔ Nàna flanan kɔ, 0 n'u bɛ Bɛn, walima 1 ni don fɔlɔ Nàna flanan kɔ fɛ. Nin misali in b’a jira cogo min na PlainDate fɛn fila bɛ se ka suma ɲɔgɔn ma. Temporal.PlainDate.compare ka dalilu fila bɛɛ ka kan ka kɛ PlainDate fɛnw ye.
const don1 = Temporal.PlainDate.from({ san: 2026, kalo: 2, don: 24 }); const don2 = Temporal.PlainDate.from({ san: 2026, kalo: 3, tile: 24 });
// don1 bɛ na ka kɔn don2 ɲɛ, o la -1 console.log (Waati.Don jɛlen.compare (don1, don2));
// Misali n’an y’a ɲini ka fɛn fila suma ɲɔgɔn na minnu suguya tɛ kelen ye console.log (Waati.Don jɛlen.compare (don1, Waati.Sisan.instant ())); // TypeError: Waati fili: PlainDate forow tiɲɛnenw dira.
Kɛrɛnkɛrɛnnenya la, o b’a To a ka nɔgɔn ka Temporal fɛnw kulu dɔ Labɛn ka Kɛɲɛ ni waatibolodacogo ye. // Temporal.PlainDate fɛnw kulu dɔ const donw = [ ... ];
// baara kɛ ni Temporal.PlainDate.compare ye i n’a fɔ sangaɲɔgɔnma baarakɛcogo donw.sort(Waati.Don jɛlen.ka sanga ɲɔgɔn ma);
Waatibolodacogo caman tigɛli Moment gafemarayɔrɔ koloma tɛ waatibolodacogo caman tigɛli dɛmɛ. N’i mago bɛ o baarakɛcogo in na, i ka kan fana ka moment-timezone pake in sigi sen kan. Nin foroko in tɛ jiri-yɛrɛyɛrɛ ye, o la a bɛ se ka dɔ fara i ka bunteni hakɛ kan kosɛbɛ. Ni i ye moment-timezone (waati-waati-yɔrɔ) Sìgi sen kan, i bɛ Se ka Moment fɛnw Labɛn ka Kɛ waatibolodacogo wɛrɛw ye ni tz fɛɛrɛ ye. I n’a fɔ Moment baara tɔw bɛ cogo min na, o bɛ fɛn jukɔrɔla fɛn caman sɛmɛntiyaminɛn. // Assuming US kɔrɔnyanfan waati const sisan = waati (); konsolɛ.log (sisan); // Waati<2026-02-28T20:08:20-05:00>
// Yɛlɛma ka don Pasifiki waati la. // Kɔrɔnfɛla waati fɔlɔ tununna. now.tz('Amerika/Los_Angeles'); konsolɛ.log (sisan); // Waati<2026-02-28T17:08:20-08:00>
Waatibolodacogo baarakɛcogo bɛ jɔ Temporal API kɔnɔ ni baara bɛ kɛ ni Temporal.ZonedDateTime fɛn ye. O fɛnw kɔnɔ, withTimeZone fɛɛrɛ dɔ bɛ yen min bɛ ZonedDateTime kura segin min bɛ waati kelen jira waati kɔnɔ, nka waatibolodalen kɔnɔ. // Segin, ka miiri Ameriki kɔrɔnyanfan waati la const sisan = Waati.Sisan.zonedDateWaatiISO (); console.log (sisan.ka SigidaString ()); // 2/28/2026, 20h12:02 waati EST
// Yɛlɛma ka don Pasifiki waati la const nowPacific = now.withTimeZone('Amerika/Bɔnɛ_Angeles'); console.log (sisan Pasifiki.ka SigidaString ()); // 2/28/2026, 17h12:02 waati PST
// Fɛn fɔlɔ bɛ to a cogo la console.log (sisan.ka SigidaString ()); // 2/28/2026, 20h12:02 waati EST
Kɔlɔsili: ToLocaleString ye nafa minnu segin, i n’a fɔ u tɔgɔ b’a jira cogo min na, olu bɛ tali kɛ sigida la. Misali kode in dabɔra en-US locale kɔnɔ, o la a cogoya bɛ nin cogo la: 2/28/2026, 5:12:02 PM PST. Sigida wɛrɛ la, o bɛ se ka kɛ cogo wɛrɛ la. Misali la, en-GB locale kɔnɔ, i tun bɛna fɛn dɔ sɔrɔ i n’a fɔ 28/2/2026, 17:12:02 GMT-8. A Refactoring min bɛ diɲɛ kɔnɔ tiɲɛ na A ka kɛ ko an bɛ porogaramu dɔ jɔ walasa ka ko kɛtaw boloda waatibolodalenw kɔnɔ. Nin appli in yɔrɔ dɔ ye baarakɛcogo ye, getEventTimes, min bɛ ISO 8601 sɛrɛkili dɔ ta min bɛ ko kɛlen waati ni don jira, sigida waatibolodacogo, ani waatibolodacogo laɲinilen. Baarakɛcogo bɛ waati ni don sɛrɛkiliw labɛn minnu bɛ kɛ ka ɲɛsin ko kɛlen ma waatibolo fila bɛɛ la. Ni baarakɛminɛn in dira donna-sɛbɛn dɔ ma min tɛ waati/don sɛrɛkili bɛnnen ye, o bɛ fili dɔ fili. Nin ye waleyali fɔlɔ ye, ka baara kɛ ni Moment ye (o fana bɛ baara kɛ ni moment-timezone pake ye).
moment import ka bɔ ‘waati-waati-yɔrɔ’ la;
function getEventTimes(donnaString, baarakɛlaWaatiyɔrɔ, laɲiniWaatiyɔrɔ) { const waatiFormat = 'MMM D, YYYY, h:mm:ss a z';
// 1. A daminɛ waati dabɔ baarakɛla ka waatibolodacogo la const ko kɛlenWaati = waati.tz( donnaSɔrɔ, . moment.ISO_8601, // ISO 8601 sɛrɛkili dɔ makɔnɔ tiɲɛ, // Parsing gɛlɛn baarakɛlaWaatiZone );
// fili dɔ fili ni inputString ma don ɲuman jira ni (!ko kɛwaati.yeValid()) { throw new Error('Don/waati doncogo tiɲɛnen'); } .
// 2. Laɲini waati jatebɔ // CRITICAL: An ka kan ka clone, walima 'eventTime' bɛ Changé fo abada! const laɲiniWaati = ko kɛlenwaati.clone().tz(laɲiniWaatiZɔn);
kɔsegin { . sigida: ko kɛlenWaati.format(waatiFormat), . laɲini: laɲiniWaati.format(waatiForomat), . }; } .
const waatibolodacogo = getEventTimes( '2026-03-05T15:00-05:00', Bamako, Mali. 'Amerika/New_York', 1999. ‘Erɔpu/London’, 1999. );
console.log (waati bolodacogo.sigida); // Marisikalo tile 5, san 2026, 15h00 EST
console.log (waati bolodacogo.laɲini); // Marisikalo tile 5, san 2026, 20h waati GMT
Nin misali in na, an bɛ baara Kɛ ni ISO 8601 don makɔnɔnen cogoya ye, min bɛ Dɛmɛ ka Dòn Moment kɔnɔ. An bɛ baara Kɛ fana ni parsing strict ye, o kɔrɔ ye ko Moment tɛna a ɲini ka jateminɛ Kɛ ni don sɛrɛkili ye min ni format (fɔcogo) tɛ Bɛn. Ni don sɛrɛkili min tɛ ISO ye, o tɛmɛna, o bɛ na ni don fɛn tiɲɛnen ye, wa an bɛ fili dɔ fili. Temporal waleyali bɛ i n’a fɔ a bɛ tali kɛ ɲɔgɔn na, nka danfaraba damadɔ bɛ a ni ɲɔgɔn cɛ.
function getEventTimes(donnaString, baarakɛlaWaatiyɔrɔ, laɲiniWaatiyɔrɔ) { // 1. Parse input directement ka don Instant kɔnɔ, o kɔ, a dabɔ // a ZonedDateTime min bɛ baarakɛla ka zone kɔnɔ. const instant = Waati.Instant.ka bɔ (donniSɛrɛ); const eventTime = instant.toZonedDateTimeISO(baarakɛla ka waatibolo);
// 2. Yɛlɛma ka don laɲini yɔrɔ la // Nin bɛ fɛn KURU dɔ segin a yɛrɛma; 'eventTime' ye lakana ye. const laɲiniWaati = ko kɛlenwaati.niWaatiyɔrɔ(laɲiniWaatiyɔrɔ);
// 3. Format ni Intl (a jɔlen bɛ a kɔnɔ) . const sugandiliw = { san : 'jatebla', . kalo: 'kuma surun', . don: 'jatebla', . lɛrɛ: ‘jateden’, . miniti : '2-jateden', . filanan : 'jateden 2', . waatiZoneTɔgɔ: 'kuma surun'. };
kɔsegin { . sigida: eventTime.toLocaleString(navigateur.kan, sugandiliw), laɲini: targetTime.toLocaleString(navigateur.kan, sugandiliw) }; } .
const waatibolodacogo = getEventTimes( '2026-03-05T15:00-05:00', Bamako, Mali. 'Amerika/New_York', 1999. ‘Erɔpu/London’, 1999. );
console.log (waati bolodacogo.sigida); // Marisikalo tile 5, san 2026, 15h00 EST
console.log (waati bolodacogo.laɲini); // Marisikalo tile 5, san 2026, 20h waati GMT
Ni Moment ye, an ka kan ka cogoya sɛrɛkili dɔ jira k’a jɛya don sɛrɛkiliw sɔrɔlenw na. Baarakɛla sigiyɔrɔ walima a sigiyɔrɔ mana kɛ min o min ye, ko kɛlenw waatiw bɛna kɛ tuma bɛɛ i n’a fɔ Marisikalo tile 5, san 2026, 3:00:00pm EST ye. Ani fana, an man kan ka danfara dɔ fili k’a jɛya. Ni sɛrɛkili tiɲɛnen dɔ tɛmɛna Temporal.Instant.from fɛ, Temporal bɛna danfara fili an ye. Fɛn kelen min ka kan ka Kɔlɔsi o ye ko hali ni parsing strict (parsing) Kɛra, Moment version (Moment version) bɛ nɔgɔya ka Tɛmɛ halibi. Temporal (waatibolodacogo) bɛ waatibolodacogo de wajibiya min bɛ sɛrɛkili laban na. Aw ka kan fana k’a kɔlɔsi ko ikomi an bɛ baara kɛ ni navigator.language ye, nin kode in bɛna baara kɛ navigatɔrɔn sigida dɔrɔn de la, bawo navigator ma ɲɛfɔ Node.js sigida la. Temporal waleyali bɛ baara Kɛ ni navigatɔrɔn ka yɔrɔ ye min bɛ yen sisan (navigator.language), o la baarakɛla bɛna ko kɛlenw waatiw Sɔrɔ a yɛrɛma u ka sigida waati cogoya la. En-US sigida la, nin ye Marisikalo tile 5, san 2026, 15h00 EST. Nka ni baarakɛla bɛ Lɔnduru, misali la, ko kɛlenw waatiw bɛna Labɛn i n’a fɔ 5 Mar 2026, 15:00:00 GMT-5. Kuma surun
Waleya Moment.js ye Waati kuntaalajan Waati min bɛ sen na sisan waati() Waati.Sisan.zonedDateWaatiISO() . Parsing ISO ye waati(str) . Waati.Instant.ka bɔ(str) la. Waati fara a kan .add(7, 'tile') (a bɛ fɛn caman sɛmɛntiya) . .add({ tile: 7 }) (fɛn kura) . Danfara min bɛ u ni ɲɔgɔn cɛ .diff(wɛrɛw, 'lɛrɛw') . .kabini(wɛrɛw).lɛrɛw Waatibolodacogo .tz('Zɔn/Tɔgɔ') . .withTimeZone('Zɔn/Tɔgɔ') .
A filɛli fɔlɔ la, danfara bɛ Se ka Kɛ danfara dɔɔnin ye (ani Temporal ta la, tuma dɔw la, kumasenw ka ca ani ka gɛlɛn kosɛbɛ) daɲɛw labɛncogo la, nka nafa jɔnjɔn damadɔ bɛ Temporal baara la ka Tɛmɛ Moment.js kan:
Ka kɛ mɔgɔ jɛlen ye, o kɔrɔ ye ko kabako ni fɛnɲɛnamaw ka dɔgɔn minnu ma laɲini. A bɛ se ka kɛ ko waati bɛ nɔgɔya ka tɛmɛ, nka a bɛ tali kɛ “jateminɛ” la, o min bɛ se ka kɛ sababu ye tuma dɔw la ka donw kɛ minnu tɛ bɛn. Ni i ye fɛn dɔ Di Temporal ma min tɛ tiɲɛ ye, o bɛ fili dɔ fili. Ni kode bɛ boli, i b’a dɔn ko i ye don bɛnnen sɔrɔ. Moment bɛ se ka bonyaba dɔ fara application’s bundle kan, kɛrɛnkɛrɛnnenya la n’i bɛ baara kɛ ni moment-timezone package ye. Temporal tɛ foyi fara a kan (n’a cilen don i ka laɲini navigatɔrɔw kɔnɔ). Yɛlɛmabaliya b’a to i dalen b’a la ko i tɛna kunnafoniw bɔnɛ abada walima k’u sɛbɛn u kan n’i bɛ don caman tigɛli ni baara kɛ. Waati jiracogo danfaralenw (Instant, PlainDateTime, ZonedDateTime) ka kɛɲɛ n’i ka ɲininiw ye, yɔrɔ min na Moment ye fɛn ye min bɛ UTC waati taamasiyɛn lamini tuma bɛɛ. Temporal bɛ baara Kɛ ni Intl APIw ye donw sɛbɛnni kama, o kɔrɔ ye ko i bɛ Se ka sigida-la-ko-dɔn-cogo Kɛ k’a sɔrɔ i ma tokenw Fɔ k’a jɛya.
Kɔlɔsili minnu bɛ Polyfill kan I n’a fɔ a fɔra cogo min na ka tɛmɛ, Temporal polyfill dɔ bɛ yen min bɛ sɔrɔ, a bɛ tilatila i n’a fɔ npm pake min tɔgɔ ye ko @js-temporal/polyfill. N’i b’a fɛ ka Temporal baara bi, i mago bɛna kɛ nin polyfill in na walasa ka navigatɔrɔw dɛmɛ i n’a fɔ Safari minnu ma API ci fɔlɔ. Kibaru jugu min bɛ nin na, o ye ko a bɛna dɔ fara i ka bunteni hakɛ kan. Kibaru duman ye ko hali bi a bɛ dɔ fara a kan kosɛbɛ ka tɛmɛ waati walima waati-waati-yɔrɔ kan. Nin ye bundle hakɛw sumalen ye i n’a fɔ Bundlephobia.com y’a fɔ cogo min na, n’o ye siti ye min bɛ kunnafoniw di npm pakew hakɛw kan (pake kelen-kelen bɛɛ tɔgɔ digi walasa ka Bundlephobia sɛgɛsɛgɛli ye):
Foroko Minified (minified) ye Minifié & gzipped (gzipped) ye @js-waati/polyfill ye 154,1 kB ye 44,1 kB ye waati dɔɔnin 294,4 kB ye 75,4 kB ye waati-waati-yɔrɔ 1 MB ye 114,2 kB ye
Polifill fana tariku la, baarakɛcogo gɛlɛya dɔw tùn bɛ hakilijagabɔ baara lamini na, wa nin sɛbɛn in sɛbɛnni waati la, a jatera ko a bɛ alfa cogo la. O de kosɔn, a bɛ se ka kɛ i t’a fɛ ka baara kɛ n’a ye sɛnɛko la fo n’a ka se a cogo la min kɔgɔlen don kosɛbɛ. Kibaru duman wɛrɛ ye ko jigiya la, polyfill mago tɛna kɛ a la ka mɛn (fo n’i mago bɛ navigatɔrɔ kɔrɔw dɛmɛni na, tiɲɛ don). Nin sɛbɛn in kɛtuma na, Temporal ye cikan ci Chrome, Edge ani Firefox kɔnɔ. A ma labɛn kosɛbɛ Safari kɔnɔ fɔlɔ, hali n’a bɛ iko a bɛ sɔrɔ ni boli waati darapo ye Teknoloji ɲɛjirali laban na.