JavaScript-de ýazylan islendik programma diýen ýaly belli bir derejede wagt ýa-da sene bilen işleýär. Ilkibaşda bu gurlan Sene API bilen çäklenýärdi. Bu API esasy işlemegi öz içine alýar, ýöne edip biljek zady gaty çäklidir. Moment.js ýaly üçünji tarap kitaphanalary, soňra bolsa Intl API we täze Temporal API ýaly gurlan API-ler wagt we seneler bilen işlemek üçin has çeýeligi goşýar. Moment.js-iň ýokarlanmagy we ýykylmagy Moment.js wagt we seneler bilen işlemek üçin güýçli enjamlary bolan JavaScript kitaphanasydyr. Ol wagt senesi manipulýasiýasy ýaly esasy Sene API-den ýiten aýratynlyklary öz içine alýar we köp umumy amallary ýönekeýleşdirýär. Moment seneleri we wagtlary formatlamak funksiýalaryny hem öz içine alýar. Köp dürli programmalarda giňden ulanylýan kitaphana öwrüldi. Şeýle-de bolsa, Moment-de meseleleriň paýy bardy. Bu uly kitaphanadyr we programmanyň bukjasynyň ululygyna ep-esli goşant goşup biler. Kitaphana agaçlaryň titremesini goldamaýandygy sebäpli (kitaphanalaryň ulanylmadyk böleklerini aýryp bilýän häzirki zaman bukjalarynyň aýratynlygy), diňe bir ýa-da iki funksiýasyny ulansaňyzam, “Moment” kitaphanasy tutuşlygyna girýär. Moment bilen baglanyşykly başga bir mesele, döredýän obýektleriniň üýtgäp durmagydyr. “Moment” obýektinde käbir funksiýalary çagyrmagyň ters täsirleri bar we şol obýektiň bahasyny üýtgedýär. Bu garaşylmadyk gylyk-häsiýetlere ýa-da näsazlyklara sebäp bolup biler. 2020-nji ýylda “Moment” -iň saklaýjylary kitaphanany tehniki hyzmat tertibine girizmek kararyna geldiler. Täze aýratynlyk işlenip düzülenok we hyzmat edijiler ony täze taslamalarda ulanmazlygy maslahat berýärler. Sene-fns ýaly başga JavaScript sene kitaphanalary bar, ýöne şäherde täze bir oýunçy bar, gönüden-göni JavaScript-de gurlan API: Wagtlaýyn. Asyl Sene API-iň deşiklerini doldurýan, şeýle hem Moment we beýleki kitaphanalarda tapylan käbir çäklendirmeleri çözýän täze standart. Wagtlaýyn näme? Wagtlaýyn, häzirki zaman JavaScript-i kesgitleýän ECMAScript standartyna goşulýan täze wagt we sene API. 20266-njy ýylyň mart aýyna çenli TC39 işiniň 4-nji tapgyryna ýetdi (JavaScript dilindäki tekliplere we goşmaçalara gözegçilik edýän komitet) we ECMAScript spesifikasiýasynyň indiki wersiýasyna giriziler. Bu eýýäm birnäçe brauzerde ýerine ýetirildi: Chrome 144+ we Firefox 139+, Safari-iň ýakyn wagtda işlemegine garaşylýar. Goldaw berilmeýän brauzerler we Node.js. üçin polifill hem bar. Wagtlaýyn API, adatça, pursatlary görkezýän obýektleri döredýär. Bular belli bir wagt zolagynda doly we senäniň möhürleri bolup biler ýa-da hiç hili wagt zolagy ýa-da senesi barada maglumat bolmazdan “diwar sagady” wagtynyň umumy mysaly bolup biler. Temporal-yň käbir esasy aýratynlyklary:
Sene bilen ýa-da bolmazdan wagtlar. Wagtlaýyn obýekt belli bir senede belli bir wagty ýa-da sene maglumaty bolmadyk wagty görkezip biler. Belli bir senäni, wagtsyz hem görkezip bolýar. Wagt zolagy goldawy. Wagtlaýyn obýektler doly wagt zolagyndan habarly we dürli wagt zolaklaryna öwrülip bilýär. Moment wagt zolaklaryny hem goldaýar, ýöne goşmaça pursat zolagy kitaphanasyny talap edýär. Üýtgemezlik. Wagtlaýyn bir zat döredilenden soň, ony üýtgedip bolmaz. Wagt arifmetiki ýa-da wagt zonasynyň öwrülişigi esasy obýekti üýtgetmeýär. Munuň ýerine täze Wagtlaýyn obýekt döredýärler. 1 esasly indeksirleme. Sana API-de (şeýle hem Moment bilen) näsazlyklaryň umumy çeşmesi, aýlaryň nol indekslenmegidir. Bu, hemmämiziň hakyky durmuşda düşünşimiz ýaly 1-nji aý däl-de, 0-njy aýdygyny aňladýar. Wagtlaýyn muny 1 esasly indeksirlemek arkaly düzedýär - ýanwar 1-nji aý. Brauzerde guruldy. Temporal brauzeriň özünde API bolansoň, programmaňyzyň bukjasynyň ululygyna hiç zat goşmaýar.
Sene API-iň gitmejekdigini hem bellemelidiris. Wagtlaýyn bu API-den üstün çyksa-da, ol aýrylmaýar ýa-da könelmeýär. Brauzerler birden Sene API-ni aýyrsa, köp programmalar bozular. Şeýle-de bolsa, Momentiň häzirki wagtda hyzmat ediş tertibinde miras taslamasy hasaplanýandygyny ýadyňyzdan çykarmaň. Makalanyň galan böleginde Moment esasly kody täze Temporal API-ä geçirmek üçin käbir "reseptlere" serederis. Geliň, gaýtadan işlemäge başlalyň! Sene we wagt obýektlerini döretmek Seneleri we wagtlary dolandyrmazdan ozal, olary görkezýän zatlary döretmeli. Häzirki senäni we wagty görkezýän Moment obýektini döretmek üçin pursat funksiýasyny ulanyň. const indi = pursat (); console.log (häzir); // pursat <2026-02-18T21: 26: 29-05: 00>
Bu obýekt indi zerur bolanda formatlaşdyrylyp ýa-da dolandyrylyp bilner.
// UTC öwürmek //duýduryş: Bu pursat obýektini üýtgedýär we UTC re iniminde goýýar! console.log (now.utc ()); // pursat <2026-02-19T02: 26: 29Z>
// formatlanan setiri çap ediň - häzirki wagtda UTC wagtyny ulanýandygyna üns beriň console.log (now.format ('MM / DD / YYYY hh: mm: ss a')); // 02/19/2026 02:27:07
Moment hakda ýatda saklamaly esasy zat, Moment obýektiniň elmydama wagt we sene hakda maglumatlary öz içine almagydyr. Diňe wagt maglumatlary bilen işlemek zerur bolsa, bu adatça gowy, ýöne gündiziň tygşytlama wagty ýa-da senäniň wagt hasaplamalaryna täsir edip biljek böküş ýyllary ýaly ýagdaýlarda garaşylmadyk hereketlere sebäp bolup biler. Wagtlaýyn has çeýe. Temporal.Instant obýekti döredip, häzirki senäni we wagty görkezýän bir obýekt döredip bilersiňiz. Bu, “döwürden” (1970-nji ýylyň 1-nji ýanwarynda ýary gije UTC) kesgitlenen wagt nokadyny görkezýär. Wagtlaýyn, bu dessine nanosekunt derejesindäki takyklyk bilen salgylanyp biler. const indi = Wagtlaýyn.Now.instant ();
// döwürden bäri çig nanosekuntlara serediň console.log (häzirki.epochNanosekuntlar); // 1771466342612000000n
// UTC üçin format console.log (now.toString ()); // 2026-02-19T01: 55: 27.844Z
// belli bir wagt zolagy üçin format console.log (now.toString ({timeZone: 'Amerika / New_York'})); // 2026-02-18T20: 56: 57.905-05: 00
Wagtlaýyn.Stantiki usuldan peýdalanyp, belli bir wagt we sene üçin döredilip bilner.
const myInstant = Wagtlaýyn.Instant.from ('2026-02-18T21: 10: 00-05: 00');
// timeerli wagt zolagynda dessine formatlaň. Munuň diňe gözegçilik edýändigine üns beriň // formatirleme - pursat.utc ýaly obýekti üýtgetmeýär. console.log (myInstant.toString ({timeZone: 'Amerika / New_York'})); // 2026-02-18T21: 10: 00-05: 00
Şeýle hem wagtlaýyn obýektleriň beýleki görnüşlerini döredip bilersiňiz, şol sanda:
Wagtlaýyn.PlainDate: Wagt maglumaty bolmadyk sene. Wagtlaýyn.PlainTime: Sene maglumaty bolmadyk wagt. Temporal.ZonedDateTime: Belli bir wagt zolagynda sene we wagt.
Bularyň hersinde senäni we / ýa-da wagty görkezýän bir obýekt bilen ýa-da derňemek üçin sene setiri bar. // Diňe bir sene const şu gün = Wagtlaýyn.PlainDate.from ({ ýyl: 2026, aý: 2, // fewral üçin 2 ulanýandygymyzy belläň gün: 18 }); console.log (şu gün.toString ()); // 2026-02-18
// Diňe bir wagt const günortanlyk wagty = Wagtlaýyn.PlainTime.from ({ sagat: 12 }); console.log (günortanlykTime.toString ()); // 12:00:00
// ABŞ-nyň gündogar wagt zolagynda sene we wagt const dueAt = Temporal.ZonedDateTime.from ({ timeZone: 'Amerika / New_York', ýyl: 2026, aý: 3, gün: 1, sagat: 12, minut: 0, ikinji: 0 }); console.log (dueAt.toString ()); // 2026-03-01T12: 00: 00-05: 00 [Amerika / Täze_York]
Jikme-jiklik Sene we wagt maglumatlarynyň programma taýdan döredilmegini öz içine aldyk. Indi jikme-jikliklere seredeliň. Jikme-jiklik, gurlan Temporal API-den has çeýe bir ugur. Sene setirini pursat funksiýasyna geçirip analiz edip bilersiňiz. Momenteke-täk argument bilen, Moment ISO senesi setirine garaşýar, ýöne ulanylýan senäniň formatyny görkezýän ikinji argument berseňiz, alternatiw formatlary ulanyp bilersiňiz.
const isoDate = pursat ('2026-02-21T09: 00: 00'); const formatlananDate = pursat ('2/21/26 9:00:00', 'M / D / YY h: mm: ss');
console.log (isoDate); // pursat <2026-02-21T09: 00: 00-05: 00>
console.log (formatlanan senesi); // pursat <2026-02-21T09: 00: 00-05: 00>
Has köne wersiýalarynda, Moment islendik özbaşdak formatlanan sene setirini derňemek üçin iň gowy çaklama eder. Bu garaşylmadyk netijelere getirip biler. Mysal üçin, 02-03-2026 2-nji fewral ýa-da 3-nji mart? Şol sebäpli, “Moment” -iň täze wersiýalarynda ISO formatlanan sene setiri bolmazdan çagyrylsa (islenýän formatda ikinji argument hem berilmese) görnükli könelişme duýduryşy görkezilýär. Wagtlaýyn diňe ýörite formatlanan sene setirini derňär. Setir ISO 8601 formatyna ýa-da RFC 9557 giňeltmesine laýyk bolmalydyr. Eger laýyk däl senäniň usuly usuldan geçirilse, Temporal RangeError atar.
// RFC 9557 sene setirini ulanmak const myDate = Temporal.Instant.from ('2026-02-21T09: 00: 00-05: 00 [Amerika / Täze_York]'); console.log (myDate.toString ({timeZone: 'Amerika / New_York'})); // 2026-02-21T09: 00: 00-05: 00
// Näbelli senäniň setirini ulanmak const otherDate = Wagtlaýyn.Instant.from ('2/21/26 9:00:00'); // RangeError: Wagtlaýyn ýalňyşlyk: yearylyň bahasyny deňeşdireniňde nädogry nyşan.
Sene setiriniň takyk talaplary haýsy wagtlaýyn obýekt döredýändigiňize baglydyr. Aboveokardaky mysalda Temporal.Instant doly ISO talap edýär8601 ýa-da RFC 9557 sene setiri, wagt zolagy bilen kesgitlenen senäni we wagty kesgitleýär, ýöne sene formatynyň diňe bir bölegini ulanyp, PlainDate ýa-da PlainTime obýektlerini döredip bilersiňiz. const myDate = Temporal.PlainDate.from ('2026-02-21'); console.log (myDate.toString ()); // 2026-02-21
const myTime = Temporal.PlainTime.from ('09: 00: 00 '); console.log (myTime.toString ()); // 09:00:00
Bu setirleriň garaşylýan formata laýyk gelmelidigine üns beriň, ýogsam ýalňyşlyk goýberiler.
// Gabat gelmeýän wagt setirlerini ulanmak. Bularyň hemmesi RangeError zyňar. Wagtlaýyn.PlainTime.from ('9:00'); Wagtlaýyn.PlainTime.from ('9:00:00');
Maslahat: ISO däl setirleri dolandyrmak Sebäbi wagtlaýyn ygtybarlylygy ileri tutýar, 02-01-2026 ýaly setiriň görnüşini çaklamaga synanyşmaz. Maglumat çeşmäňiz şeýle setirleri ulanýan bolsa, Temporal bilen ulanmazdan ozal 2026-02-01 ýaly bahalary ISO setirine täzeden düzmek üçin birneme simulýasiýa etmeli bolarsyňyz.
Formatlamak Bir pursat ýa-da wagtlaýyn obýekt bar bolsa, belki belli bir wagtda formatlanan setire öwürmek islärsiňiz. Bu, pursatyň birneme has ýitileşýän mysaly. Obýektiň format usulyna islenýän senäniň formatyny suratlandyrýan bellikler hatary diýilýär. const senesi = pursat ();
console.log (date.format ('MM / DD / YYYY')); // 02/22/2026
console.log (date.format ('MMMM Do YYYY, h: mm: ss a')); // 2026-njy ýylyň 22-nji fewraly, agşam 8: 18:30
Başga bir tarapdan, Temporal sizden birneme sözli bolmagy talap edýär. Wagtlaýyn obýektler, Instant ýaly, obýektiň häsiýetleri hökmünde görkezilen dürli formatlama opsiýalaryny kabul edýän toLocaleString usuly bar.
const senesi = Wagtlaýyn.Now.instant ();
// argumentsiz, häzirki sebit üçin deslapky formaty alarys console.log (date.toLocaleString ()); // 22/22/2026, 8:23:36 PM (ABŞ-nyň sebitini göz öňünde tutup)
// adaty format setirini döretmek üçin formatirleme opsiýalaryny geçiň console.log (date.toLocaleString ('en-US', {) aý: 'uzyn', gün: 'san', ýyl: 'san', sagat: '2 sanly', minut: '2 sanly' })); // 2026-njy ýylyň 22-nji fewraly sagat 8: 23-de
// diňe format setirinde isleýän meýdanlaryňyzy geçiriň console.log (date.toLocaleString ('en-US', {) aý: 'gysga', gün: 'san' })); // 22-nji fewral
Wagtlaýyn sene formaty aslynda kapotyň aşagynda Intl.DateTimeFormat API (häzirki zaman brauzerlerinde eýýäm elýeterli) ulanýar. Customörite formatlaşdyrma opsiýalaryňyz bilen gaýtadan ulanylýan “DateTimeFormat” obýektini döredip, soňra wagtlaýyn obýektleri format görnüşine geçirip bilersiňiz. Şol sebäpli, Moment ýaly adaty sene formatlaryny goldamaýar. “Q1 2026” ýa-da başga ýöriteleşdirilen formatlaşdyrma ýaly bir zat gerek bolsa, sene formatlaşdyryş kody gerek ýa-da üçünji tarap kitaphanasyna baryp bilersiňiz. const formatlaýjy = täze Intl.DateTimeFormat ('en-US', { aý: '2 sanly', gün: '2 sanly', ýyl: 'san' });
const senesi = Wagtlaýyn.Now.instant (); console.log (formatter.format (senesi)); // 02/22/2026
Momentiň formatlaýyş belliklerini ýazmak has ýönekeý, ýöne olar ýerli däl. Format aý / gün tertibi ýaly “gaty kod” setirlerini düzýär. Temporal ýaly konfigurasiýa obýektini ulanmagyň artykmaçlygy, islendik sebite awtomatiki uýgunlaşyp, dogry formaty ulanmagydyr. const senesi = Wagtlaýyn.Now.instant ();
const formatOptions = { aý: 'san', gün: 'san', ýyl: 'san' };
console.log (date.toLocaleString ('en-US', formatOptions)); // 22/22/2026
console.log (date.toLocaleString ('en-GB', formatOptions)); // 22/02/2026
Sene hasaplamalary Köp goýmalarda, senede käbir hasaplamalary ýerine ýetirmeli bolarsyňyz. Wagt birliklerini (günler, sagatlar, sekuntlar we ş.m.) goşmak ýa-da aýyrmak isläp bilersiňiz. Mysal üçin, häzirki senäňiz bar bolsa, ulanyja senäni 1 hepdeden görkezip bilersiňiz. Wagtlaýyn obýektlerde bu amallary ýerine ýetirýän goşmak we aýyrmak ýaly usullar bar. Bu funksiýalar bir bahany we birligi alýar, mysal üçin: goşuň (7, 'gün'). Moment we Temporal-yň arasyndaky örän möhüm tapawut, bu sene hasaplamalaryny ýerine ýetireniňde esasy obýektiň üýtgedilmegi we asyl bahasynyň ýitmegi. const indi = pursat ();
console.log (häzir); // pursat <2026-02-24T20: 08: 36-05: 00>
const nextWeek = now.add (7, 'gün'); console.log (nextWeek); // pursat <2026-03-03T20: 08: 36-05: 00>
// Gotça - asyl obýekt üýtgedildi console.log (häzir); // pursat <2026-03-03T20: 08: 36-05: 00>
Asyl senesini ýitirmezlik üçin, göçürme döretmek üçin Moment obýektine klon çagyryp bilersiňiz. indi= pursat (); const nextWeek = now.clone () goşuň (7, 'gün');
console.log (häzir); // pursat <2026-02-24T20: 12: 55-05: 00>
console.log (nextWeek); // pursat <2026-03-03T20: 12: 55-05: 00>
Beýleki tarapdan, wagtlaýyn zatlar üýtgewsizdir. “Instant”, “PlainDate” we ş.m. ýaly bir obýekt döredeniňizden soň, şol obýektiň bahasy hiç wagt üýtgemez. Wagtlaýyn obýektleriň goşmak we aýyrmak usullary hem bar. Wagtlaýyn haýsy obýektiň görnüşlerine haýsy wagt birliklerini goşup boljakdygyny birneme saýlaýar. Mysal üçin, dessine gün goşup bilmersiňiz:
const indi = Wagtlaýyn.Now.instant (); const nextWeek = now.add ({günler: 7}); // RangeError: Wagtlaýyn ýalňyşlyk: Iň uly bölüm senäniň birligi bolup bilmez
Sebäbi dessine obýektler UTC-da belli bir nokady görkezýär we senenama-agnostiki. Bir günüň uzynlygy, gündiz tygşytlamak wagty ýaly wagt zonasynyň düzgünlerine görä üýtgäp biljekdigi sebäpli, bu hasaplama dessine elýeterli däl. Şeýle-de bolsa, bu amaly “PlainDateTime” ýaly beýleki obýektlerde ýerine ýetirip bilersiňiz: const indi = Wagtlaýyn.Now.plainDateTimeISO (); console.log (now.toLocaleString ()); // 24/24/2026, 8:23:59
const nextWeek = now.add ({günler: 7});
// Asyl PlainDateTime üýtgemezligine üns beriň console.log (now.toLocaleString ()); // 24/24/2026, 8:23:59
console.log (nextWeek.toLocaleString ()); // 3/3/2026, 8:23:59
Şeýle hem iki pursat ýa-da wagtlaýyn jisimleriň arasynda näçe wagtyň bardygyny hasaplap bilersiňiz. “Moment” -iň tapawutly funksiýasy bilen granulirlik üçin birlik üpjün etmeli, ýogsam millisekuntdaky tapawudy yzyna getirer. const senesi1 = pursat ('2026-02-21T09: 00: 00'); const senesi2 = pursat ('2026-02-22T10: 30: 00');
console.log (date2.diff (sene1)); // 91800000
console.log (date2.diff (sene1, 'günler')); // 1
Wagtlaýyn obýekt bilen muny etmek üçin, başga bir wagtlaýyn obýekti usullara çenli ýa-da şondan soň geçirip bilersiňiz. Bu wagt tapawudy barada maglumatlary öz içine alýan Temporal.Duration obýektini görkezýär. Dowamlylyk obýekti tapawudyň her bir bölegi üçin häsiýetlere eýedir we wagt tapawudyny görkezýän ISO 8601 dowamlylyk setirini döredip biler.
const senesi1 = Wagtlaýyn.PlainDateTime.from ('2026-02-21T09: 00: 00'); const senesi2 = Wagtlaýyn.PlainDateTime.from ('2026-02-22T10: 30: 00');
// largestUnit wekilçilik etmek üçin iň uly wagt birligini kesgitleýär // dowamlylygy hasaplamakda const diff = date2.since (sene1, {iň ulyUnit: 'gün'});
console.log (diff.days); // 1
console.log (diff.hours); // 1
console.log (diff.minutes); // 30
console.log (diff.toString ()); // P1DT1H30M // (ISO 8601 dowamlylyk setiri: 1 gün, 1 sagat, 30 minut)
Sene we wagt deňeşdirmek Moment we Temporal ikisi hem beýlekisinden öň gelýändigini kesgitlemek üçin seneleri we wagtlary deňeşdirmäge mümkinçilik berýär, ýöne API bilen dürli çemeleşmeli. Moment, iki pursat obýektini deňeşdirmek üçin isBefore, isAfter we isSame ýaly usullary üpjün edýär. const senesi1 = pursat ('2026-02-21T09: 00: 00'); const senesi2 = pursat ('2026-02-22T10: 30: 00');
console.log (date1.isBefore (sene2)); // dogry
Wagtlaýyn, bir görnüşdäki iki obýektiň arasynda deňeşdirme geçirmek üçin statiki deňeşdirme usuly ulanylýar. Birinji sene ikinjiden öň gelse -1, deň bolsa 0, ýa-da birinji sene ikinjiden soň gelse -1 gaýdyp gelýär. Aşakdaky mysal iki sany PlainDate obýektini nädip deňeşdirmelidigini görkezýär. Temporal.PlainDate.compare üçin iki argument hem PlainDate obýektleri bolmaly.
const senesi1 = Wagtlaýyn.PlainDate.from ({ýyl: 2026, aý: 2, gün: 24}); const senesi2 = Wagtlaýyn.PlainDate.from ({ýyl: 2026, aý: 3, gün: 24});
// sene1 sene2-den öň gelýär, şonuň üçin -1 console.log (Temporal.PlainDate.compare (sene1, sene2));
// Dürli görnüşdäki iki obýekti deňeşdirjek bolsak ýalňyşlyk console.log (Temporal.PlainDate.compare (senesi1, Temporal.Now.instant ())); // TypeError: Wagtlaýyn ýalňyşlyk: Nädogry PlainDate meýdanlary berilýär.
Hususan-da, bu wagtlaýyn obýektleriň toplumyny hronologiki tertipleşdirmegi aňsatlaşdyrýar. // Temporal.PlainDate obýektleriniň toplumy const seneleri = [...];
// deňeşdiriji funksiýa hökmünde Temporal.PlainDate.compare ulanyň seneler.sort (Temporal.PlainDate.compare);
Wagt guşaklygynyň öwrülişigi Esasy pursat kitaphanasy wagt zonasynyň öwrülmegini goldamaýar. Bu funksiýa zerur bolsa, pursat zolagy paketini hem gurmaly. Bu paket agaçdan sarsdyrylmaýar we şonuň üçin bukjanyň ululygyna ep-esli goşant goşup biler. Wagt-wagt zolagyny guranyňyzdan soň, Moment obýektlerini tz usuly bilen dürli wagt zolaklaryna öwrüp bilersiňiz. Beýleki Moment amallarynda bolşy ýaly, munuň düýp manysy üýtgedilýärobýekt. // ABŞ-nyň gündogar wagtyny göz öňünde tutsak const indi = pursat (); console.log (häzir); // pursat <2026-02-28T20: 08: 20-05: 00>
// Pacificuwaş ummanyň wagtyna öwrüliň. // Asyl Gündogar wagty ýitdi. now.tz ('Amerika / Los_Angeles'); console.log (häzir); // pursat <2026-02-28T17: 08: 20-08: 00>
Wagt zonasynyň işleýşi Temporal.ZonedDateTime obýektini ulananyňyzda Temporal API-de gurulýar. Bu obýektlere şol bir wagtyň özünde, ýöne görkezilen wagt zolagynda täze ZonedDateTime gaýtaryp berýänTimeZone usuly girýär. // Againene-de ABŞ-nyň gündogar wagtyny göz öňünde tutsak const indi = Wagtlaýyn.Now.zonedDateTimeISO (); console.log (now.toLocaleString ()); // 28/28/2026, 8:12:02 PM EST
// Pacificuwaş ummanyň wagtyna öwrüliň const nowPacific = now.withTimeZone ('Amerika / Los_Angeles'); console.log (nowPacific.toLocaleString ()); // 28/28/2026, 5:12:02 PM PST
// Asyl obýekt üýtgewsiz galýar console.log (now.toLocaleString ()); // 28/28/2026, 8:12:02 PM EST
Bellik :LocaleString-e gaýtarylan formatlanan bahalar, adyndan görnüşi ýaly, ýerli-baglydyr. Nusga kody ABŞ-nyň çäginde döredildi, şonuň üçin formaty şeýle: 28/28/2026, 5:12:02 PM PST. Başga bir sebitde bu başgaça bolup biler. Mysal üçin, en-GB sebitinde 28/2/2026, 17:12:02 GMT-8 ýaly bir zat alarsyňyz. Hakyky dünýä refaktory Wagt guşaklygy boýunça wakalary meýilleşdirmek üçin programma gurýarys diýeliň. Bu programmanyň bir bölegi, wakanyň wagtyny we senesini, ýerli wagt zolagyny we maksatly wagt guşagyny görkezýän ISO 8601 setirini alýan getEventTimes funksiýasydyr. Funksiýa, iki wagt zolagynda waka üçin formatlanan wagt we sene setirlerini döredýär. Funksiýa dogry wagt / sene setiri bolmadyk giriş setiri berilse, ýalňyşlyk goýberer. Ine, Moment ulanyp, pursat ýerine ýetiriş bukjasynyň ulanylmagyny talap edýän asyl ýerine ýetiriş.
'pursat-wagt zolagyndan' pursat import etmek;
getEventTimes (inputString, userTimeZone, targetTimeZone) funksiýasy { const timeFormat = 'MMM D, YYYY, h: mm: ss a z';
// 1. Ulanyjynyň wagt guşagynda başlangyç pursaty dörediň const eventTime = moment.tz ( GirişString, pursat.ISO_8601, // ISO 8601 setirine garaşyň dogry, // Gaty derňew ulanyjyTimeZone );
// GirişString dogry senäni görkezmese, ýalňyşlyk goýberiň if (! eventTime.isValid ()) { täze roralňyşlyk atyň ('Nädogry sene / wagt giriş'); }
// 2. Maksat wagtyny hasaplaň // MÖHÜM: Biz klonlamaly, ýa-da 'eventTime' hemişelik üýtgeýär! const targetTime = eventTime.clone (). tz (targetTimeZone);
gaýdyp { ýerli: wakaTime.format (timeFormat), maksat: targetTime.format (timeFormat), }; }
const tertibi = getEventTimes ( '2026-03-05T15: 00-05: 00', 'Amerika / New_York', 'Europeewropa / London', );
console.log (tertip.local); // 2026-njy ýylyň 5-nji marty, sagat 3: 00-da EST
console.log (tertip.target); // 2026-njy ýylyň 5-nji marty, GMT agşam 8: 00-da
Bu mysalda, Moment-e kömek edip gurlan ISO 8601-iň garaşylýan senesini ulanýarys. Mundan başga-da, Moment formata laýyk gelmeýän sene setiri bilen çaklamaga synanyşmajakdygyny aňladýarys. ISO däl senäniň setiri geçse, sene obýektiniň nädogry bolmagyna sebäp bolar we ýalňyşlyk goýbereris. Wagtlaýyn ýerine ýetiriş meňzeýär, ýöne birnäçe möhüm tapawudy bar.
getEventTimes (inputString, userTimeZone, targetTimeZone) funksiýasy { // 1. Girişi dessine bölüň, soňra dörediň // ulanyjynyň zonasyndaky ZonedDateTime. const dessine = Wagtlaýyn.Instant.from (girişString); const eventTime = dessine.toZonedDateTimeISO (ulanyjyTimeZone);
// 2. Maksat zolagyna öwüriň // Bu täze bir obýekti awtomatiki usulda yzyna berýär; 'eventTime' howpsuz. const targetTime = eventTime.withTimeZone (maksatTimeZone);
// 3. Intl (formatda) ulanyp formatirläň const opsiýalary = { ýyl: 'san', aý: 'gysga', gün: 'san', sagat: 'san', minut: '2 sanly', ikinji: '2 sanly', timeZoneName: 'gysga' };
gaýdyp { ýerli: eventTime.toLocaleString (navigator.language, opsiýalar), maksat: targetTime.toLocaleString (navigator.language, opsiýalar) }; }
const tertibi = getEventTimes ( '2026-03-05T15: 00-05: 00', 'Amerika / New_York', 'Europeewropa / London', );
console.log (tertip.local); // 2026-njy ýylyň 5-nji marty, sagat 3:00:00 EST
console.log (tertip.target); // 2026-njy ýylyň 5-nji marty, GMT 8:00:00
Moment bilen, ýüze çykan senäniň setirleri üçin format setirini aç-açan görkezmeli. Ulanyjynyň ýerleşýän ýerine ýa-da ýerleşýän ýerine garamazdan, wakalaryň wagty 2026-njy ýylyň 5-nji marty, 3:00:00 görnüşinde formatlanar.agşam EST. Şeýle hem, kadadan çykmany aç-açan taşlamaly däldiris. Nädogry setir Temporal.Instant.from-a geçirilse, Temporal bu kadadan çykmany bize atar. Bellemeli bir zat, hatda berk derňew bilen hem, Moment wersiýasy has ýumşakdyr. Wagtlaýyn setiriň soňundaky wagt zolagynyň ofsetini talap edýär. Şeýle hem navigator.language ulanýandygymyz sebäpli, bu kod diňe brauzer gurşawynda işleýär, sebäbi Node.js gurşawynda nawigator kesgitlenmedi. Wagtlaýyn ýerine ýetiriş brauzeriň häzirki ýerini (navigator.language) ulanýar, şonuň üçin ulanyjy waka wagtlaryny ýerli wagt görnüşinde awtomatiki usulda alar. ABŞ-nyň çäginde, bu 2026-njy ýylyň 5-nji marty, sagat 3: 00-da EST. Şeýle-de bolsa, mysal üçin, ulanyjy Londonda bolsa, wakanyň wagty 2026-njy ýylyň 5-nji marty, 15:00:00 GMT-5 görnüşinde formatlanar. Gysgaça mazmun
Hereket Moment.js Wagtlaýyn Häzirki wagt pursat () Wagtlaýyn.Now.zonedDateTimeISO () ISO-ny derňemek pursat (str) Wagtlaýyn.Instant.from (str) Wagt goşuň .add (7, 'gün') (mutates) .add ({günler: 7}) (täze obýekt) Tapawut .diff (başga, 'sagat') .since (başga) Wagt guşaklygy .tz ('Zona / Ady') .WithTimeZone ('Zona / Name')
Bir seretseň, tapawut birneme üýtgeşik bolup biler (we Temporal ýagdaýynda, käwagt has sözli we has berk) sintaksis, ýöne Temporal-dan Moment.js-den peýdalanmagyň birnäçe möhüm artykmaçlygy bar:
Has düşnükli bolmak, az garaşylmadyk zatlary we garaşylmadyk kemçilikleri aňladýar. Pursat has ýumşak bolup görünse-de, käwagt nädogry senelere sebäp bolup bilýän “çaklama işini” öz içine alýar. Wagtlaýyn nädogry bir zat berseňiz, ýalňyşlyk goýberýär. Kod işleýän bolsa, dogry senä eýe bolandygyňyzy bilýärsiňiz. Moment programmanyň bukjasyna ep-esli ululyk goşup biler, esasanam wagt zolagy bukjasyny ulanýan bolsaňyz. Wagtlaýyn hiç zat goşmaýar (maksatly brauzerleriňize iberilenden soň). Üýtgewsizlik, sene öwrülişikleri we amallary ýerine ýetireniňizde hiç haçan maglumatlary ýitirmejekdigiňize ýa-da gaýtadan ýazmajakdygyňyza ynam döredýär. Wagtyň dürli görnüşleri (Instant, PlainDateTime, ZonedDateTime) talaplaryňyza baglylykda, Moment hemişe UTC wagt belliginiň daşyndadyr. Wagtlaýyn, sene formatlamak üçin Intl API-lerini ulanýar, bu bellikleri aç-açan görkezmezden ýerli habarly formatirlemä eýe bolup bilersiňiz.
Polifill barada bellikler Öň bellenip geçilişi ýaly, @ js-temporal / polyfill atly npm bukjasy hökmünde paýlanan Wagtlaýyn polifill bar. Şu gün Temporal ulanmak isleseňiz, Safari ýaly brauzerleri entek API ibermedik goldawlary üçin bu polifill gerek bolar. Munuň bilen baglanyşykly erbet habar, bukjanyňyzyň ululygyna goşant goşar. Gowy habar, henizem pursat ýa-da wagt zolagyndan ep-esli az goşýar. Ine, npm paket ululyklary barada maglumat berýän web sahypasy Bundlephobia.com tarapyndan habar berlişi ýaly bukjanyň ululyklaryny deňeşdirmek (Bundlefobiýa derňewini görmek üçin her bukjanyň adyna basyň):
Bukja Minified Minified & gzipped @ js-wagtlaýyn / polifill 154.1 kB 44.1 kB pursat 294,4 kB 75,4 kB pursat zolagy 1 MB 114.2 kB
Polifilliň ýadyň ulanylyşy bilen baglanyşykly käbir öndürijilik meselesi bardy we ýazylanda alfa ýagdaýynda hasaplanýar. Şol sebäpli, has kämillik ýaşyna ýetýänçä ony önümçilikde ulanmak islemezligiňiz mümkin. Beýleki gowy habar, polifilliň has köp wagt gerek bolmaz diýip umyt edýärin (elbetde köne brauzerleri goldamaly däl bolsaňyz). Writingazan wagty Temporal Chrome, Edge we Firefox-a iberildi. Safari-de entek taýýar däl, iň soňky tehnologiýa synynda iş wagty baýdagy bar ýaly görünse-de.