Fere eyikeyi iru ohun elo ti a kọ sinu JavaScript ṣiṣẹ pẹlu awọn akoko tabi awọn ọjọ ni diẹ ninu agbara. Ni ibẹrẹ, eyi ni opin si Ọjọ API ti a ṣe sinu rẹ. API yii pẹlu iṣẹ ṣiṣe ipilẹ, ṣugbọn o ni opin ni ohun ti o le ṣe. Awọn ile ikawe ẹni-kẹta bii Moment.js, ati nigbamii ti a ṣe sinu APIs bii Intl APIs ati API Temporal tuntun, ṣafikun irọrun nla pupọ si ṣiṣẹ pẹlu awọn akoko ati awọn ọjọ. Dide Ati Isubu Of Akoko.js Moment.js jẹ ile-ikawe JavaScript kan pẹlu awọn ohun elo ti o lagbara fun ṣiṣẹ pẹlu awọn akoko ati awọn ọjọ. O pẹlu awọn ẹya ti o padanu lati Ọjọ API ipilẹ, gẹgẹbi ifọwọyi agbegbe aago, o si jẹ ki ọpọlọpọ awọn iṣẹ ṣiṣe ti o wọpọ rọrun. Akoko tun pẹlu awọn iṣẹ fun kika awọn ọjọ ati awọn akoko. O di ile-ikawe ti a lo lọpọlọpọ ni ọpọlọpọ awọn ohun elo oriṣiriṣi. Sibẹsibẹ, Akoko tun ni ipin ti awọn ọran. O jẹ ile-ikawe nla kan, ati pe o le ṣafikun ni pataki si iwọn lapapo ohun elo kan. Nitori ile ikawe naa ko ṣe atilẹyin gbigbọn igi (ẹya kan ti awọn edidi ode oni ti o le yọ awọn apakan ti ko lo ti awọn ile-ikawe), gbogbo ile-ikawe Akoko wa pẹlu paapaa ti o ba lo ọkan tabi meji ninu awọn iṣẹ rẹ. Ọrọ miiran pẹlu Akoko ni otitọ pe awọn nkan ti o ṣẹda jẹ iyipada. Npe awọn iṣẹ kan lori ohun akoko kan ni awọn ipa ẹgbẹ ati pe o ṣe iyipada iye ohun naa. Eyi le ja si ihuwasi airotẹlẹ tabi awọn idun. Ni 2020, awọn olutọju akoko pinnu lati fi ile-ikawe sinu ipo itọju. Ko si idagbasoke ẹya tuntun ti n ṣe, ati awọn olutọju ṣe iṣeduro lodi si lilo rẹ fun awọn iṣẹ akanṣe tuntun. Awọn ile ikawe ọjọ JavaScript miiran wa, gẹgẹbi ọjọ-fns, ṣugbọn oṣere tuntun wa ni ilu, API ti a ṣe taara si JavaScript: Igba akoko. O jẹ boṣewa tuntun ti o kun awọn iho ti Ọjọ API atilẹba bi daradara bi yanju diẹ ninu awọn idiwọn ti a rii ni Akoko ati awọn ile-ikawe miiran. Kini Ni Igba otutu? Igba akoko jẹ akoko titun ati ọjọ API ti a nfi kun si boṣewa ECMAScript, eyiti o ṣe asọye JavaScript ode oni. Ni Oṣu Kẹta ọdun 20266, o ti de Ipele 4 ti ilana TC39 (igbimọ ti o nṣe abojuto awọn igbero ati awọn afikun si ede JavaScript), ati pe yoo wa ninu ẹya atẹle ti sipesifikesonu ECMAScript. O ti ṣe imuse ni ọpọlọpọ awọn aṣawakiri: Chrome 144+ ati Firefox 139+, pẹlu Safari nireti lati tẹle laipẹ. Polyfill tun wa fun awọn aṣawakiri ti ko ni atilẹyin ati Node.js. API Temporal n ṣẹda awọn nkan ti, ni gbogbogbo, ṣe aṣoju awọn akoko ni akoko. Iwọnyi le jẹ akoko kikun ati awọn ontẹ ọjọ ni agbegbe akoko ti a fun, tabi wọn le jẹ apẹẹrẹ jeneriki ti akoko “aago odi” laisi agbegbe aago eyikeyi tabi alaye ọjọ. Diẹ ninu awọn ẹya akọkọ ti Temporal pẹlu:

Awọn akoko pẹlu tabi laisi awọn ọjọ. Nkan igba diẹ le ṣe aṣoju akoko kan pato lori ọjọ kan pato, tabi akoko laisi eyikeyi alaye ọjọ. Ọjọ kan pato, laisi akoko kan, tun le ṣe aṣoju. Atilẹyin agbegbe aago.Awọn ohun akoko jẹ mimọ agbegbe aago ni kikun ati pe o le yipada kọja awọn agbegbe aago oriṣiriṣi. Akoko ṣe atilẹyin awọn agbegbe aago, paapaa, ṣugbọn o nilo afikun ile-ikawe akoko-akoko. Aileyipada.Ni kete ti a ti ṣẹda ohun-akoko kan, ko le yipada. Iṣiro akoko tabi awọn iyipada agbegbe aago ko yipada ohun ti o wa ni abẹlẹ. Dipo, wọn ṣe ipilẹṣẹ ohun elo Igba akoko tuntun kan. Atọka-orisun 1. orisun ti o wọpọ ti awọn idun pẹlu Ọjọ API (bakannaa pẹlu Akoko) ni pe awọn oṣu jẹ atọka-odo. Eyi tumọ si pe Oṣu Kini oṣu 0, dipo oṣu 1 bi gbogbo wa ṣe loye ni igbesi aye gidi. Awọn atunṣe igba diẹ eyi nipa lilo titọka-orisun 1 - Oṣu Kini oṣu 1. O ti kọ sinu ẹrọ aṣawakiri.Niwọn igba ti Temporal jẹ API ninu ẹrọ aṣawakiri funrararẹ, ko ṣafikun ohunkohun si iwọn lapapo ohun elo rẹ.

O tun ṣe pataki lati ṣe akiyesi pe Ọjọ API ko lọ. Lakoko ti Temporal bori API yii, kii ṣe yiyọ kuro tabi ti sọkuro. Ọpọlọpọ awọn ohun elo yoo fọ ti awọn aṣawakiri ba yọ ọjọ API kuro lojiji. Sibẹsibẹ, tun ni lokan pe Akoko ni bayi ni iṣẹ akanṣe kan ni ipo itọju. Ninu nkan ti o ku, a yoo wo diẹ ninu awọn “awọn ilana” fun gbigbe koodu orisun-akoko si API Igba otutu tuntun. Jẹ ká bẹrẹ refactoring! Ṣiṣẹda Ọjọ Ati Awọn nkan Aago Ṣaaju ki a to le ṣe afọwọyi awọn ọjọ ati awọn akoko, a ni lati ṣẹda awọn nkan ti o nsoju wọn. Lati ṣẹda ohun akoko kan ti o nsoju ọjọ ati akoko lọwọlọwọ, lo iṣẹ akoko naa. const now = asiko (); console.log (bayi); // Akoko <2026-02-18T21:26:29-05:00>

Nkan yii le ni ọna kika tabi ni ifọwọyi bi o ṣe nilo.

// yipada si UTC //ìkìlọ: Eleyi mutates awọn akoko ohun ati ki o fi o ni UTC mode! console.log (now.utc ()); // Akoko <2026-02-19T02:26:29Z>

// tẹjade okun ti a ṣe akoonu - ṣe akiyesi pe o nlo akoko UTC ni bayi console.log (bayi.kika ('MM/DD/ YYYY hh: mm: ss a')); // 02/19/2026 02:27:07 owurọ

Ohun pataki lati ranti nipa Akoko ni pe ohun akoko kan nigbagbogbo pẹlu alaye nipa akoko ati ọjọ naa. Ti o ba nilo lati ṣiṣẹ nikan pẹlu alaye akoko, eyi jẹ itanran nigbagbogbo, ṣugbọn o le fa ihuwasi airotẹlẹ ni awọn ipo bii Aago Ifojumọ tabi awọn ọdun fifo, nibiti ọjọ le ni ipa lori awọn iṣiro akoko. Igba akoko jẹ diẹ rọ. O le ṣẹda ohun kan ti o nsoju ọjọ ati akoko lọwọlọwọ nipa ṣiṣẹda akoko kan. Eyi duro fun aaye kan ni akoko ti a ṣalaye nipasẹ akoko lati igba “akoko” (UTC larin ọganjọ ni Oṣu Kini Ọjọ 1, Ọdun 1970). Igba diẹ le ṣe itọkasi lẹsẹkẹsẹ yii ni akoko pẹlu deede ipele-nanosecond. const now = Temporal.Now.instant ();

// wo aise nanoseconds niwon awọn epoch console.log (bayi.epochNanoseconds); // 1771466342612000000n

// ọna kika fun UTC console.log (bayi.toString ()); // 2026-02-19T01:55:27.844Z

// ọna kika fun agbegbe aago kan pato console.log (bayi.toString ({timeZone: 'America/New_York'})); // 2026-02-18T20:56:57.905-05:00

Temporal.Instant ohun tun le ṣẹda fun akoko kan pato ati ọjọ nipa lilo awọn lati aimi ọna.

const myInstant = Temporal.Instant.lati ('2026-02-18T21: 10: 00-05: 00');

// Ṣe ọna kika lẹsẹkẹsẹ ni agbegbe aago agbegbe. Ṣe akiyesi pe eyi nikan ni iṣakoso // awọn kika - o ko ni mutate ohun bi moment.utc ṣe. console.log(myInstant.toString({timeZone: 'America/New_York'})); // 2026-02-18T21:10:00-05:00

O tun le ṣẹda awọn oriṣi miiran ti awọn nkan Igba akoko, pẹlu:

Temporal.PlainDate: Ọjọ ti ko ni alaye akoko. Temporal.PlainTime: Akoko ti ko ni alaye ọjọ. Temporal.ZonedDateTime: Ọjọ ati aago ni agbegbe aago kan pato.

Ọkọọkan ninu iwọnyi ni ọna kan ti o le pe pẹlu ohun kan ti n ṣalaye ọjọ ati/tabi akoko, tabi okun ọjọ kan lati sọ di mimọ. // O kan ọjọ kan const today = Temporal.PlainDate.lati({ odun: 2026, osù: 2, // akiyesi a nlo 2 fun Kínní ọjọ: 18 }); console.log (loni.toString ()); // 2026-02-18

// O kan akoko const lunchTime = Temporal.PlainTime.lati({ wakati: 12 }); console.log (lunchTime.toString ()); // 12:00:00

// A ọjọ ati akoko ni US Eastern agbegbe aago const dueAt = Temporal.ZonedDateTime.lati({ aago agbegbe: 'Amẹrika/New_York', odun: 2026, osu:3, ọjọ: 1, wakati: 12, iseju: 0, keji: 0 }); console.log (dueAt.toString ()); // 2026-03-01T12:00:00-05:00[Amẹrika/New_York]

Ṣiṣayẹwo A ti bo ẹda eto ti ọjọ ati alaye akoko. Bayi jẹ ki a wo itusilẹ. Ṣiṣayẹwo jẹ agbegbe kan nibiti Akoko ti rọ diẹ sii ju API Temporal ti a ṣe sinu rẹ. O le ṣe itupalẹ okun ọjọ kan nipa gbigbe lọ si iṣẹ akoko. Pẹlu ariyanjiyan kan, Akoko n reti okun ọjọ ISO kan, ṣugbọn o le lo awọn ọna kika omiiran ti o ba pese ariyanjiyan keji ti n ṣalaye ọna kika ọjọ ti a lo.

const isoDate = akoko ('2026-02-21T09: 00: 00'); const formattedDate = asiko ('2/21/26 9:00:00','M/D/YY h:mm:ss');

console.log (isoDate); // Akoko <2026-02-21T09:00:00-05:00>

console.log (FormatedDate); // Akoko <2026-02-21T09:00:00-05:00>

Ni awọn ẹya agbalagba, Akoko yoo ṣe amoro ti o dara julọ lati ṣe itupalẹ eyikeyi okun ọjọ ti a ṣe lainidii. Eyi le ja si awọn abajade airotẹlẹ. Fun apẹẹrẹ, jẹ 02-03-2026 Kínní 2 tabi Oṣu Kẹta 3? Fun idi eyi, awọn ẹya tuntun ti Akoko ṣe afihan ikilọ ilọkuro olokiki ti o ba pe laisi okun ọjọ kika ISO (ayafi ti ariyanjiyan keji pẹlu ọna kika ti o fẹ tun fun). Igba diẹ yoo ṣe itupalẹ okun ọjọ ti a ṣe ni pato. Okun naa gbọdọ wa ni ibamu pẹlu ọna kika ISO 8601 tabi itẹsiwaju rẹ, RFC 9557. Ti okun ọjọ ti ko ni ibamu ti kọja si ọna lati ọna, Temporal yoo jabọ RangeError kan.

// Lilo ohun RFC 9557 okun ọjọ const myDate = Temporal.Instant.from ('2026-02-21T09:00:00-05:00 [America/New_York]'); console.log (myDate.toString ({timeZone: 'America/New_York'})); // 2026-02-21T09:00:00-05:00

// Lilo ohun aimọ okun ọjọ const otherDate = Temporal.Instant.from ('2/21/26 9:00:00'); // RangeError: Aṣiṣe igba die: Iwa aiṣedeede lakoko ti o n ṣe itupalẹ iye ọdun.

Awọn ibeere gangan ti okun ọjọ da lori iru ohun elo Igba akoko ti o n ṣẹda. Ni apẹẹrẹ loke, Temporal.Instant nilo ISO ni kikun8601 tabi RFC 9557 okun ọjọ ti n ṣalaye ọjọ ati akoko pẹlu aiṣedeede agbegbe aago, ṣugbọn o tun le ṣẹda awọn ohun elo PlainDate tabi PlainTime ni lilo ipin kan ti ọna kika ọjọ. const myDate = Temporal.PlainDate.from ('2026-02-21'); console.log (myDate.toString ()); // 2026-02-21

const myTime = Temporal.PlainTime.lati ('09:00:00'); console.log (myTime.toString ()); // 09:00:00

Ṣe akiyesi pe awọn okun wọnyi gbọdọ tun ni ibamu pẹlu ọna kika ti a reti, tabi aṣiṣe yoo ju silẹ.

// Lilo a ti kii-ni ifaramọ akoko awọn gbolohun ọrọ. Awọn wọnyi yoo gbogbo jabọ a RangeError. Temporal.PlainTime.lati ('9:00'); Temporal.PlainTime.lati ('9:00:00 AM');

Italolobo Pro: Mimu awọn gbolohun ọrọ ti kii ṣe ISO nitori igba diẹ ṣe pataki igbẹkẹle, kii yoo gbiyanju lati gboju le ọna kika okun bii 02-01-2026. Ti orisun data rẹ ba nlo iru awọn gbolohun ọrọ, iwọ yoo nilo lati ṣe diẹ ninu ifọwọyi okun lati tunto awọn iye sinu okun ISO bi 2026-02-01 ṣaaju igbiyanju lati lo pẹlu Igba akoko.

Tito kika Ni kete ti o ba ni akoko kan tabi ohun akoko, iwọ yoo fẹ lati yi pada si okun ti a ṣe akoonu ni aaye kan. Eyi jẹ apẹẹrẹ nibiti Akoko jẹ diẹ diẹ sii terse. O pe ọna kika ohun naa pẹlu okun ti awọn ami ti o ṣe apejuwe ọna kika ọjọ ti o fẹ. const ọjọ = asiko ();

console.log (date.kika ('MM/DD/ YYYY')); // 02/22/2026

console.log (date.format ('MMMM Ṣe YYYY, h: mm: ss a')); // Kínní 22, 2026, 8:18:30 irọlẹ

Ni apa keji, Temporal nilo ki o jẹ ọrọ-ọrọ diẹ sii. Awọn nkan igba diẹ, gẹgẹbi Lẹsẹkẹsẹ, ni ọna siLocaleString ti o gba orisirisi awọn aṣayan kika ti a sọ gẹgẹbi awọn ohun-ini ti ohun kan.

const date = Temporal.Now.instant ();

// laisi awọn ariyanjiyan, a yoo gba ọna kika aiyipada fun agbegbe lọwọlọwọ console.log (date.toLocaleString ()); // 2/22/2026, 8:23:36 PM (a ro pe agbegbe kan ti en-US)

// kọja awọn aṣayan kika lati ṣe agbekalẹ okun ọna kika aṣa kan console.log(date.toLocaleString('en-US', { osu: 'gun', ọjọ: 'nọmba', odun: 'nọmba', wakati: '2-nọmba', iseju: '2-nọmba' })); // Oṣu Kẹta Ọjọ 22, Ọdun 2026 ni 8:23 Alẹ

// nikan kọja awọn aaye ti o fẹ ni okun kika console.log(date.toLocaleString('en-US', { osu: 'kukuru', ọjọ: 'nọmba' })); // Oṣu kejila ọjọ 22

Tito kika ọjọ igba die gangan nlo Intl.DateTimeFormat API (eyiti o wa tẹlẹ ni imurasilẹ ni awọn aṣawakiri ode oni) labẹ hood. Iyẹn tumọ si pe o le ṣẹda ohun elo DateTimeFormat ti o tun ṣee lo pẹlu awọn aṣayan kika aṣa rẹ, lẹhinna kọja awọn nkan Igba akoko si ọna kika rẹ. Nitori eyi, ko ṣe atilẹyin awọn ọna kika ọjọ aṣa bi Akoko ṣe. Ti o ba nilo nkan bii 'Q1 2026' tabi ọna kika amọja miiran, o le nilo diẹ ninu koodu ọna kika ọjọ aṣa tabi de ọdọ ile-ikawe ẹnikẹta kan. const formatter = titun Intl.DateTimeFormat('en-US', { osù: '2-nọmba', ọjọ: '2-nọmba', odun: 'nọmba' });

const date = Temporal.Now.instant (); console.log (formatter.format (ọjọ)); // 02/22/2026

Awọn ami kika kika akoko jẹ rọrun lati kọ, ṣugbọn wọn kii ṣe ọrẹ-agbegbe. Awọn okun ọna kika “koodu lile” awọn nkan bii aṣẹ oṣu/ọjọ. Anfani ti lilo ohun atunto kan, bi Temporal ṣe, ni pe yoo ṣe adaṣe laifọwọyi si eyikeyi agbegbe ti a fun ati lo ọna kika to pe. const date = Temporal.Now.instant ();

const formatOptions = { osù: 'nọmba', ọjọ: 'nọmba', odun: 'nọmba' };

console.log (date.toLocaleString ('en-US', formatOptions)); // 2/22/2026

console.log (date.toLocaleString ('en-GB', formatOptions)); // 22/02/2026

Awọn iṣiro ọjọ Ni ọpọlọpọ awọn ohun elo, iwọ yoo nilo lati pari ṣiṣe diẹ ninu awọn iṣiro ni ọjọ kan. O le fẹ lati ṣafikun tabi yọkuro awọn akoko akoko (awọn ọjọ, awọn wakati, iṣẹju-aaya, ati bẹbẹ lọ). Fun apẹẹrẹ, ti o ba ni ọjọ ti o wa lọwọlọwọ, o le fẹ fi ọjọ han olumulo naa ni ọsẹ 1 lati igba bayi. Awọn nkan iṣẹju ni awọn ọna bii fikun ati iyokuro ti o ṣe awọn iṣẹ wọnyi. Awọn iṣẹ wọnyi gba iye ati ẹyọkan, fun apẹẹrẹ: fikun(7, 'ọjọ'). Iyatọ pataki pupọ laarin Akoko ati Igba diẹ, sibẹsibẹ, ni pe nigba ṣiṣe awọn iṣiro ọjọ wọnyi, ohun ti o wa ni ipilẹ ti yipada ati pe iye atilẹba rẹ ti sọnu. const now = asiko ();

console.log (bayi); // Akoko <2026-02-24T20:08:36-05:00>

const nextWeek = now.fikun(7, 'days'); console.log (ọsẹ to nbọ); // Akoko <2026-03-03T20:08:36-05:00>

// Gotcha - ohun atilẹba jẹ iyipada console.log (bayi); // Akoko <2026-03-03T20:08:36-05:00>

Lati yago fun sisọnu ọjọ atilẹba, o le pe oniye lori ohun akoko lati ṣẹda ẹda kan. const bayi= asiko (); const nextWeek = now.clone ().fikun(7, 'days');

console.log (bayi); // Akoko <2026-02-24T20:12:55-05:00>

console.log (ọsẹ to nbọ); // Akoko <2026-03-03T20:12:55-05:00>

Ni ida keji, awọn nkan igba diẹ ko le yipada. Ni kete ti o ti ṣẹda ohun kan bii Lẹsẹkẹsẹ, PlainDate, ati bẹbẹ lọ, iye ohun naa kii yoo yipada. Awọn nkan igba diẹ tun ni awọn ọna afikun ati iyokuro. Igba akoko jẹ yiyan diẹ nipa iru awọn akoko akoko le ṣe afikun si iru awọn iru nkan. Fun apẹẹrẹ, o ko le ṣafikun awọn ọjọ si Lẹsẹkẹsẹ:

const now = Temporal.Now.instant (); const nextWeek = now.fikun({ọjọ: 7}); // RangeError: Aṣiṣe igba die: Ẹka ti o tobi julọ ko le jẹ ẹyọ ọjọ kan

Eyi jẹ nitori awọn nkan lẹsẹkẹsẹ ṣe aṣoju aaye kan pato ni akoko ni UTC ati pe wọn jẹ kalẹnda-agnostic. Nitori gigun ti ọjọ kan le yipada da lori awọn ofin agbegbe aago gẹgẹbi Aago Ifipamọ Oju-ọjọ, iṣiro yii ko si lori Lẹsẹkẹsẹ. O le, sibẹsibẹ, ṣe isẹ yii lori awọn iru nkan miiran, gẹgẹbi PlainDateTime: const now = Temporal.Now.plainDateTimeISO (); console.log (bayi.toLocaleString ()); // 2/24/2026, 8:23:59 PM

const nextWeek = now.fikun({ọjọ: 7});

// Ṣe akiyesi pe atilẹba PlainDateTime ko yipada console.log (bayi.toLocaleString ()); // 2/24/2026, 8:23:59 PM

console.log (ọsẹ ti nbọ.toLocaleString ()); // 3/3/2026, 8:23:59 PM

O tun le ṣe iṣiro iye akoko ti o wa laarin akoko meji tabi awọn nkan igba die. Pẹlu iṣẹ iyatọ akoko, o nilo lati pese ẹyọkan fun granularity, bibẹẹkọ yoo da iyatọ pada ni awọn aaya milliseconds. const date1 = asiko ('2026-02-21T09:00:00'); const date2 = akoko ('2026-02-22T10: 30: 00');

console.log (date2.diff (date1)); // 91800000

console.log (date2.diff (ọjọ1, 'ọjọ')); // 1

Lati ṣe eyi pẹlu ohun igba diẹ, o le ṣe ohun elo Igba diẹ miiran si titi tabi awọn ọna lati igba. Eleyi da a Temporal.Duration ohun ti o ni awọn alaye nipa awọn akoko iyato. Ohun elo Iye akoko ni awọn ohun-ini fun paati kọọkan ti iyatọ, ati pe o tun le ṣe agbekalẹ okun iye akoko ISO 8601 ti o nsoju iyatọ akoko.

const date1 = Temporal.PlainDateTime.lati ('2026-02-21T09:00:00'); const date2 = Temporal.PlainDateTime.lati ('2026-02-22T10: 30: 00');

// tobiUnit pato awọn ti akoko akoko lati soju // ni iṣiro iye akoko const diff = date2.niwon (date1, {Ti o tobiUnit: 'ọjọ'});

console.log (diff.days); // 1

console.log (diff.hours); // 1

console.log (diff.minutes); // 30

console.log (diff.toString ()); // P1DT1H30M // (Okun iye akoko ISO 8601: ọjọ 1, wakati 1, iṣẹju 30)

Ifiwera Ọjọ Ati Awọn akoko Akoko ati Igba akoko jẹ ki o ṣe afiwe awọn ọjọ ati awọn akoko lati pinnu eyiti o wa ṣaaju ekeji, ṣugbọn mu awọn ọna oriṣiriṣi pẹlu API. Akoko pese awọn ọna bii isBefore, isAfter, and isSame lati ṣe afiwe awọn nkan iṣẹju meji. const date1 = asiko ('2026-02-21T09:00:00'); const date2 = akoko ('2026-02-22T10: 30: 00');

console.log (date1.isBefore (date2)); // otitọ

Igba akoko nlo ọna afiwera aimi lati ṣe afiwe laarin awọn nkan meji ti iru kanna. O pada -1 ti ọjọ akọkọ ba wa ṣaaju keji, 0 ti wọn ba dọgba, tabi 1 ti ọjọ akọkọ ba wa lẹhin keji. Apẹẹrẹ atẹle fihan bi o ṣe le ṣe afiwe awọn nkan PlainDate meji. Awọn ariyanjiyan mejeeji si Temporal.PlainDate.compare gbọdọ jẹ awọn nkan PlainDate.

const date1 = Temporal.PlainDate.lati ({odun: 2026, oṣu: 2, ọjọ: 24}); const date2 = Temporal.PlainDate.lati ({odun: 2026, oṣu: 3, ọjọ: 24});

// date1 wa ṣaaju ọjọ2, bẹ -1 console.log (Temporal.PlainDate.compare (ọjọ1, date2));

// Aṣiṣe ti a ba gbiyanju lati ṣe afiwe awọn nkan meji ti awọn oriṣiriṣi oriṣiriṣi console.log (Temporal.PlainDate.compare (date1, Temporal.Now.instant ())); // Aṣiṣe Iru: Aṣiṣe igba die: Awọn aaye PlainDate ti ko tọ ti pese.

Ni pataki, eyi jẹ ki o rọrun lati to lẹsẹsẹ awọn ohun elo Igba akoko ni ọna-ọjọ. // Ohun orun ti Temporal.PlainDate ohun const ọjọ = [...];

// lo Temporal.PlainDate.compare bi iṣẹ comparator dates.sort (Temporal.PlainDate.compare);

Awọn iyipada Agbegbe akoko Ile-ikawe Akoko pataki ko ṣe atilẹyin awọn iyipada agbegbe aago. Ti o ba nilo iṣẹ ṣiṣe yii, o tun nilo lati fi sori ẹrọ package akoko-akoko. Apo yii kii ṣe igi-igi, nitorinaa o le ṣafikun ni pataki si iwọn lapapo rẹ. Ni kete ti o ba ti fi sori ẹrọ akoko-akoko, o le yi awọn nkan akoko pada si awọn agbegbe akoko oriṣiriṣi pẹlu ọna tz. Gẹgẹbi pẹlu awọn iṣẹ Akoko miiran, eyi ṣe iyipada ipilẹnkan. // A ro US Eastern akoko const now = asiko (); console.log (bayi); // Akoko <2026-02-28T20:08:20-05:00>

// Iyipada si Pacific akoko. // Awọn atilẹba Eastern akoko ti sọnu. now.tz ('America/Los_Angeles'); console.log (bayi); // Akoko <2026-02-28T17:08:20-08:00>

Iṣẹ ṣiṣe agbegbe aago jẹ itumọ sinu API Temporal nigba lilo ohun elo Temporal.ZonedDateTime kan. Awọn nkan wọnyi pẹlu ọna pẹluTimeZone ti o da ZonedDateTime tuntun pada ti o nsoju akoko kanna ni akoko, ṣugbọn ni agbegbe aago kan pato. // Lẹẹkansi, a ro US Eastern akoko const now = Temporal.Now.zonedDateTimeISO (); console.log (bayi.toLocaleString ()); // 2/28/2026, 8:12:02 PM EST

// Iyipada si Pacific akoko const nowPacific = now.withTimeZone('America/Los_Angeles'); console.log (bayiPacific.toLocaleString ()); // 2/28/2026, 5:12:02 PST

// Ohun atilẹba ko yipada console.log (bayi.toLocaleString ()); // 2/28/2026, 8:12:02 PM EST

Akiyesi: Awọn iye kika ti a da pada nipasẹ siLocaleString jẹ, gẹgẹbi orukọ naa ṣe tumọ si, ti o gbẹkẹle agbegbe. Koodu apẹẹrẹ jẹ idagbasoke ni agbegbe en-US, nitorinaa ọna kika jẹ bi eyi: 2/28/2026, 5:12:02 PM PST. Ni agbegbe miiran, eyi le yatọ. Fun apẹẹrẹ, ni agbegbe en-GB, iwọ yoo gba nkan bii 28/2/2026, 17:12:02 GMT-8. A Real-aye Refactoring Ká sọ pé a ń kọ ìṣàfilọ́lẹ̀ kan fún ṣíṣètò àwọn ìṣẹ̀lẹ̀ jákèjádò àwọn àgbègbè àkókò. Apakan ti ohun elo yii jẹ iṣẹ kan, getEventTimes, eyiti o gba okun ISO 8601 ti o nsoju akoko ati ọjọ iṣẹlẹ naa, agbegbe aago agbegbe, ati agbegbe aago ibi-afẹde kan. Iṣẹ naa ṣẹda akoko kika ati awọn okun ọjọ fun iṣẹlẹ ni awọn agbegbe aago mejeeji. Ti iṣẹ naa ba fun ni okun titẹ sii ti kii ṣe akoko to wulo / okun ọjọ, yoo jabọ aṣiṣe kan. Eyi ni imuse atilẹba, ni lilo Akoko (tun nilo lilo package akoko-akoko).

akoko agbewọle lati 'akoko-akoko';

iṣẹ getEventTimes(inputString, userTimeZone, targetTimeZone) { const timeFormat = 'MMM D, YYYY, h:mm:ss a z';

// 1. Ṣẹda akoko ibẹrẹ ni agbegbe aago olumulo const eventTime = moment.tz( Okun titẹ sii, moment.ISO_8601, // Reti ohun ISO 8601 okun ooto, // Itupalẹ ti o muna olumuloTimeZone );

// Jabọ aṣiṣe ti o ba ti inputString ko soju kan wulo ọjọ ti o ba jẹ (! eventTime.isValid ()) { jabọ aṣiṣe tuntun ('Igbewọle ọjọ/akoko ti ko tọ'); }

// 2. Ṣe iṣiro akoko afojusun // Lominu ni: A gbọdọ oniye, tabi 'eventTime' ayipada lailai! const targetTime = eventTime.clone () .tz (targetTimeZone);

pada { local: eventTime.format(timeFormat), afojusun: targetTime.format(timeFormat), }; }

iṣeto const = getEventTimes( '2026-03-05T15:00-05:00', 'Amẹrika/New_York', 'Europe/London', );

console.log (schedule.local); // Oṣù 5, 2026, 3:00:00 EST

console.log (schedule.target); // Oṣù 5, 2026, 8:00:00 aṣalẹ GMT

Ninu apẹẹrẹ yii, a nlo ọna kika ọjọ ti a nireti ti ISO 8601, eyiti o ṣe iranlọwọ ni akoko. A tun nlo itọka ti o muna, eyiti o tumọ si pe Akoko kii yoo gbiyanju lati gboju pẹlu okun ọjọ ti ko baamu ọna kika naa. Ti okun ọjọ ti kii ṣe ISO ti kọja, yoo ja si nkan ọjọ ti ko wulo, ati pe a jabọ aṣiṣe kan. Imuse igba diẹ dabi iru, ṣugbọn o ni awọn iyatọ bọtini diẹ.

iṣẹ getEventTimes(inputString, userTimeZone, targetTimeZone) { // 1. Tu awọn igbewọle taara sinu ohun Lẹsẹkẹsẹ, ki o si ṣẹda // a ZonedDateTime ni agbegbe olumulo. const ese = Temporal.Instant.from (inputString); const eventTime = instant.toZonedDateTimeISO (olumuloTimeZone);

// 2. Yipada si agbegbe ibi-afẹde // Eleyi laifọwọyi pada a NEW ohun; 'iṣẹlẹTime' jẹ ailewu. const targetTime = eventTime.withTimeZone (targetTimeZone);

// 3. Ṣe ọna kika nipa lilo Intl (ti a ṣe sinu) awọn aṣayan const = { odun: 'nọmba', osu: 'kukuru', ọjọ: 'nọmba', wakati: 'nọmba', iseju: '2-nọmba', keji: '2-nọmba', TimeZone Orukọ: 'kukuru' };

pada { agbegbe: eventTime.toLocaleString (navigator.language, awọn aṣayan), afojusun: targetTime.toLocaleString(navigator.language, awọn aṣayan) }; }

iṣeto const = getEventTimes( '2026-03-05T15:00-05:00', 'Amẹrika/New_York', 'Europe/London', );

console.log (schedule.local); // Oṣù 5, 2026, 3:00:00 PM EST

console.log (schedule.target); // Oṣù 5, 2026, 8:00:00 PM GMT

Pẹlu Akoko, a ni lati pato okun ọna kika ni ṣoki fun awọn gbolohun ọrọ ọjọ abajade. Laibikita ipo olumulo tabi agbegbe, awọn akoko iṣẹlẹ yoo jẹ tito nigbagbogbo bi Oṣu Kẹta 5, 2026, 3:00:00pm EST. Pẹlupẹlu, a ko ni lati sọ imukuro ni gbangba. Ti okun ti ko tọ ba kọja si Temporal.Instant.from, Temporal yoo jabọ imukuro fun wa. Ohun kan lati ṣe akiyesi ni pe paapaa pẹlu itọka ti o muna, ẹya Akoko tun jẹ alaanu diẹ sii. Igba diẹ nilo aiṣedeede agbegbe aago ni opin okun. O yẹ ki o tun ṣe akiyesi pe niwọn bi a ti n lo navigator.language, koodu yii yoo ṣiṣẹ ni agbegbe ẹrọ aṣawakiri nikan, nitori a ko ṣe alaye aṣawakiri ni agbegbe Node.js kan. Imuse igba diẹ nlo agbegbe ti aṣawakiri lọwọlọwọ (navigator.language), nitorinaa olumulo yoo gba awọn akoko iṣẹlẹ ni ọna kika laifọwọyi ni ọna kika agbegbe wọn. Ni agbegbe en-US, eyi jẹ Oṣu Kẹta 5, 2026, 3:00:00 irọlẹ EST. Bibẹẹkọ, ti olumulo ba wa ni Ilu Lọndọnu, fun apẹẹrẹ, awọn akoko iṣẹlẹ yoo jẹ kika bi 5 Oṣu Kẹta 2026, 15:00:00 GMT-5. Lakotan

Iṣe Akoko.js Igba die Akoko lọwọlọwọ asiko() Temporal.Now.zonedDateTimeISO() Iṣaro ISO asiko(str) Igba die.Lẹsẹkẹsẹ.lati (str) Fi akoko kun .fikun(7, 'ọjọ') (awọn iyipada) .fikun({ọjọ: 7}) (ohun tuntun) Iyatọ .diff(miiran, 'wakati') .niwon (miiran) .wakati Agbegbe aago .tz('Agbegbe/Orukọ') .pẹluTimeZone('Agbegbe/Orukọ')

Ni wiwo akọkọ, iyatọ le jẹ iyatọ diẹ (ati ninu ọran ti Temporal, nigbamiran diẹ sii ọrọ-ọrọ ati diẹ sii ti o muna) sintasi, ṣugbọn awọn anfani bọtini pupọ lo wa si lilo Temporal lori Moment.js:

Jije kedere diẹ tumọ si awọn iyanilẹnu diẹ ati awọn idun airotẹlẹ. Akoko le dabi ẹni pe o jẹ alaanu diẹ sii, ṣugbọn o kan “iṣẹ amoro,” eyiti o le ja si awọn ọjọ ti ko tọ nigba miiran. Ti o ba fun Temporal nkan ti ko wulo, o jabọ aṣiṣe. Ti koodu ba ṣiṣẹ, o mọ pe o ni ọjọ to wulo. Akoko le ṣafikun iwọn pataki si idii ohun elo, ni pataki ti o ba nlo package akoko-akoko. Igba akoko ko ṣe afikun ohunkohun (ni kete ti o ti firanṣẹ ni awọn aṣawakiri ibi-afẹde rẹ). Aileyipada yoo fun ọ ni igboya pe iwọ kii yoo padanu tabi kọ data nigba ṣiṣe awọn iyipada ọjọ ati awọn iṣẹ ṣiṣe. Awọn aṣoju oriṣiriṣi ti akoko (Lẹsẹkẹsẹ, PlainDateTime, ZonedDateTime) da lori awọn ibeere rẹ, nibiti akoko jẹ nigbagbogbo murasilẹ ni ayika akoko akoko UTC kan. Temporal nlo awọn API Intl fun tito kika ọjọ, eyiti o tumọ si pe o le ni ọna kika agbegbe-mọ laisi nini lati pato awọn ami-ami.

Awọn akọsilẹ Lori The Polyfill Gẹgẹbi a ti sọ tẹlẹ, polyfill igba die wa, ti o pin bi package npm ti a npè ni @js-akoko/polyfill. Ti o ba fẹ lo Temporal loni, iwọ yoo nilo polyfill yii lati ṣe atilẹyin awọn aṣawakiri bii Safari ti ko tii fi API ranṣẹ sibẹsibẹ. Awọn iroyin buburu pẹlu eyi ni pe yoo ṣafikun si iwọn lapapo rẹ. Irohin ti o dara ni pe o tun ṣafikun ni pataki kere ju akoko tabi agbegbe-akoko. Eyi ni lafiwe ti awọn iwọn lapapo bi a ti royin nipasẹ Bundlephobia.com, oju opo wẹẹbu kan ti o ṣafihan alaye lori awọn iwọn package npm (tẹ lori orukọ package kọọkan lati rii itupalẹ Bundlephobia):

Package Dinku Miniified & gzipped @js-akoko / polyfill 154,1 kB 44,1 kB asiko 294,4 kB 75.4kB akoko-akoko 1 MB 114,2 kB

Polyfill tun ti ni itan-akọọlẹ diẹ ninu awọn ọran iṣẹ ni ayika lilo iranti, ati ni akoko kikọ, o gba pe o wa ni ipo alfa kan. Nitori eyi, o le ma fẹ lati lo ni iṣelọpọ titi yoo fi de ipo ti o dagba sii. Irohin ti o dara miiran ni pe ni ireti polyfill kii yoo nilo pupọ diẹ sii (ayafi ti o ba nilo lati ṣe atilẹyin awọn aṣawakiri agbalagba, dajudaju). Ni akoko kikọ, Temporal ti firanṣẹ ni Chrome, Edge, ati Firefox. Ko ti ṣetan pupọ ni Safari sibẹsibẹ, botilẹjẹpe o han pe o wa pẹlu asia akoko asiko kan lori Awotẹlẹ Imọ-ẹrọ tuntun.

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free