Yuav luag txhua yam ntawm daim ntawv thov sau rau hauv JavaScript ua haujlwm nrog lub sijhawm lossis hnub hauv qee lub peev xwm. Thaum pib, qhov no tau txwv rau qhov tsim-hauv Hnub API. Qhov API no suav nrog kev ua haujlwm yooj yim, tab sis muaj kev txwv ntau hauv qhov nws tuaj yeem ua tau. Cov tsev qiv ntawv thib peb zoo li Moment.js, thiab tom qab tsim cov APIs xws li Intl APIs thiab Temporal API tshiab, ntxiv qhov hloov pauv ntau dua rau kev ua haujlwm nrog sijhawm thiab hnub tim. Rise And Fall Of Moment.js Moment.js yog lub tsev qiv ntawv JavaScript nrog cov khoom siv muaj zog rau kev ua haujlwm nrog lub sijhawm thiab hnub tim. Nws suav nrog cov yam ntxwv uas ploj lawm los ntawm qhov pib Hnub API, xws li kev tswj hwm thaj tsam lub sijhawm, thiab ua rau ntau yam haujlwm yooj yim dua. Moment kuj suav nrog cov haujlwm rau formatting hnub thiab sijhawm. Nws tau los ua ib lub tsev qiv ntawv dav siv hauv ntau daim ntawv thov sib txawv. Txawm li cas los xij, Moment kuj muaj nws cov teeb meem. Nws yog lub tsev qiv ntawv loj, thiab tuaj yeem ntxiv qhov tseem ceeb rau daim ntawv thov cov pob loj. Vim tias lub tsev qiv ntawv tsis txhawb nqa ntoo co (ib qho ntawm cov khoom siv niaj hnub no uas tuaj yeem tshem tawm qhov tsis siv ntawm cov tsev qiv ntawv), tag nrho Moment tsev qiv ntawv suav nrog txawm tias koj tsuas yog siv ib lossis ob ntawm nws txoj haujlwm. Lwm qhov teeb meem nrog Moment yog qhov tseeb tias cov khoom nws tsim yog hloov tau. Hu rau qee yam haujlwm ntawm Moment yam khoom muaj kev phiv thiab mutates tus nqi ntawm cov khoom ntawd. Qhov no tuaj yeem ua rau tus cwj pwm tsis zoo lossis kab laum. Xyoo 2020, cov neeg saib xyuas Moment tau txiav txim siab muab lub tsev qiv ntawv rau hauv kev saib xyuas. Tsis muaj kev txhim kho tshiab tau ua tiav, thiab cov neeg saib xyuas pom zoo kom siv nws rau cov haujlwm tshiab. Muaj lwm lub tsev qiv ntawv JavaScript hnub, xws li hnub tim-fns, tab sis muaj ib tus neeg ua si tshiab hauv nroog, API tsim ncaj qha rau hauv JavaScript: Temporal. Nws yog tus qauv tshiab uas sau rau hauv lub qhov ntawm Thawj Hnub API nrog rau kev daws qee qhov kev txwv pom hauv Moment thiab lwm lub tsev qiv ntawv. Temporal yog dab tsi? Temporal yog lub sijhawm tshiab thiab hnub API tau ntxiv rau ECMAScript tus qauv, uas txhais cov JavaScript niaj hnub. Raws li lub Peb Hlis 20266, nws tau mus txog Theem 4 ntawm TC39 txheej txheem (cov pab pawg uas saib xyuas cov lus pom zoo thiab ntxiv rau cov lus JavaScript), thiab yuav suav nrog cov ntawv txuas ntxiv ntawm ECMAScript specification. Nws twb tau siv nyob rau hauv ntau lub browsers: Chrome 144+ thiab Firefox 139+, nrog Safari xav tias yuav ua raws sai sai. Ib qho polyfill kuj muaj rau cov browsers tsis txhawb nqa thiab Node.js. Temporal API tsim cov khoom uas, feem ntau, sawv cev rau lub sijhawm. Cov no tuaj yeem yog cov ntawv teev npe puv sijhawm thiab hnub tim nyob rau hauv ib cheeb tsam muab sijhawm, lossis lawv tuaj yeem yog qhov piv txwv ntawm "phab ntsa moos" lub sijhawm yam tsis muaj lub sijhawm sijhawm lossis cov ntaub ntawv hnub tim. Qee qhov tseem ceeb ntawm Temporal suav nrog:
Sijhawm nrog lossis tsis muaj hnub.Ib yam khoom ib ntus tuaj yeem sawv cev rau lub sijhawm tshwj xeeb ntawm hnub tshwj xeeb, lossis sijhawm yam tsis muaj ntaub ntawv hnub. Ib hnub tshwj xeeb, tsis muaj sijhawm, tuaj yeem sawv cev. Kev them nyiaj yug cheeb tsam lub sij hawm.Temporal cov khoom yog tag nrho lub sij hawm cheeb tsam paub thiab yuav hloov dua siab tshiab nyob rau txawv sij hawm aav. Moment txhawb cov cheeb tsam lub sijhawm, ib yam nkaus, tab sis nws yuav tsum muaj lub sijhawm ntxiv-timezone lub tsev qiv ntawv. Immutability.Thaum ib qho khoom siv Temporal raug tsim, nws hloov tsis tau. Lub sij hawm arithmetic los yog lub sij hawm zone conversion tsis hloov cov khoom hauv qab. Hloov chaw, lawv tsim ib qho khoom siv Temporal tshiab. 1-raws li indexing.Ib qhov chaw ntawm kab laum nrog Hnub API (nrog rau Moment) yog lub hli yog xoom-indexed. Qhov no txhais tau hais tias Lub Ib Hlis yog lub hli 0, tsis yog lub hli 1 raws li peb txhua tus nkag siab hauv lub neej tiag tiag. Temporal kho qhov no los ntawm kev siv 1-based indexing - Lub Ib Hlis yog lub hli 1. Nws tau tsim rau hauv browser.Vim Temporal yog API hauv browser nws tus kheej, nws tsis ntxiv dab tsi rau koj daim ntawv thov cov ntaub ntawv loj.
Nws tseem ceeb heev uas yuav tsum nco ntsoov tias Date API tsis ploj mus. Thaum Temporal hloov pauv qhov API no, nws tsis raug tshem tawm lossis tsis pom zoo. Ntau daim ntawv thov yuav tawg yog tias browsers dheev tshem tawm Hnub API. Txawm li cas los xij, tseem nco ntsoov tias Moment tam sim no suav tias yog ib txoj haujlwm qub txeeg qub teg hauv kev saib xyuas hom. Hauv seem ntawm tsab xov xwm, peb yuav saib qee qhov "daim ntawv qhia" rau kev hloov pauv Moment-based code rau Temporal API tshiab. Cia peb pib refactoring! Tsim Hnub Thiab Lub Sijhawm Khoom Ua ntej peb tuaj yeem tswj cov hnub thiab sijhawm, peb yuav tsum tsim cov khoom sawv cev rau lawv. Txhawm rau tsim cov khoom Moment sawv cev rau hnub tim thiab lub sijhawm tam sim no, siv lub sijhawm ua haujlwm. const now = moment(); console.log(tam sim no); // Moment<2026-02-18T21:26:29-05:00>
Cov khoom no tam sim no tuaj yeem tsim kho lossis kho raws li xav tau.
// convert UTC sa UA //ceeb toom: Qhov no hloov pauv cov khoom Moment thiab muab tso rau hauv UTC hom! console.log(now.utc()); // Moment<2026-02-19T02:26:29Z>
// luam ib txoj hlua formatted - nco ntsoov tias nws siv sijhawm UTC tam sim no console.log(now.format('MM/DD/YYYY hh:mm:ss a')); // 02/19/2026 02:27:07 teev
Qhov tseem ceeb uas yuav tsum nco ntsoov txog Moment yog qhov khoom Moment ib txwm suav nrog cov ntaub ntawv hais txog lub sijhawm thiab hnub tim. Yog tias koj tsuas yog xav ua haujlwm nrog cov ntaub ntawv sijhawm, qhov no feem ntau yog qhov zoo, tab sis nws tuaj yeem ua rau tus cwj pwm tsis xav txog hauv cov xwm txheej zoo li Hnub Teeb Txuag Sijhawm lossis xyoo leap, qhov twg hnub tuaj yeem cuam tshuam rau lub sijhawm suav. Temporal yog hloov tau yooj yim dua. Koj tuaj yeem tsim ib qho khoom sawv cev rau hnub tim thiab lub sijhawm tam sim no los ntawm kev tsim cov khoom Temporal.Instant. Qhov no sawv cev rau lub ntsiab lus hauv lub sijhawm uas tau hais los ntawm lub sijhawm txij li "lub sijhawm" (ib tag hmo UTC rau Lub Ib Hlis 1, 1970). Temporal tuaj yeem siv qhov tam sim no hauv lub sijhawm nrog nanosecond-theem precision. const tam sim no = Temporal.Now.instant();
// pom raw nanoseconds txij li lub sijhawm console.log(now.epochNanoseconds); // 1771466342612000000n
// format rau UTC console.log(now.toString()); // 2026-02-19T01:55:27.844Z ib
// hom ntawv rau ib lub sijhawm tshwj xeeb console.log(now.toString({ timeZone: 'America/New_York' })); // 2026-02-18T20:56:57.905-05:00 Tsum
Temporal.Instant cov khoom tseem tuaj yeem tsim rau lub sijhawm tshwj xeeb thiab hnub los ntawm kev siv los ntawm txoj kev zoo li qub.
const myInstant = Temporal.Instant.from('2026-02-18T21:10:00-05:00');
// Format lub instant nyob rau hauv lub zos lub sij hawm. Nco ntsoov tias qhov no tsuas yog tswj hwm // qhov formatting - nws tsis hloov cov khoom zoo li moment.utc ua. console.log(myInstant.toString({timeZone: 'America/New_York' })); // 2026-02-18T21:10:00-05:00 Nws
Koj tuaj yeem tsim lwm yam khoom Temporal, suav nrog:
Temporal.PlainDate: Hnub tim uas tsis muaj sijhawm qhia. Temporal.PlainTime: Ib lub sijhawm uas tsis muaj cov ntaub ntawv hnub tim. Temporal.ZonedDateTime: Hnub tim thiab lub sijhawm nyob rau hauv ib cheeb tsam tshwj xeeb.
Txhua yam ntawm no muaj ib txoj hauv kev uas tuaj yeem hu nrog ib qho khoom qhia hnub tim thiab / lossis lub sijhawm, lossis ib txoj hlua hnub los txheeb xyuas. // Tsuas yog hnub const hnub no = Temporal.PlainDate.from({ Xyoo: 2026, lub hli: 2, // ceeb toom peb siv 2 rau Lub Ob Hlis noj: 18 }); console.log(today.toString()); // 2026-02-18
// Tsuas yog ib lub sijhawm const lunchTime = Temporal.PlainTime.from({ hnu: 12 }); console.log(lunchTime.toString()); // 12:00:00 Nws
// Hnub tim thiab lub sij hawm nyob rau hauv Teb Chaws Asmeskas Eastern lub sij hawm const dueAt = Temporal.ZonedDateTime.from({ timeZone: 'America/New_York', Xyoo: 2026, muaj: 3,. hnub: 1, hnu: 12,. nqi :0,. ob :0 }); console.log(dueAt.toString()); // 2026-03-01T12:00:00-05:00[America/New_York]
Parsing Peb tau hais txog qhov programmatic tsim cov ntaub ntawv hnub thiab sijhawm. Tam sim no cia peb saib ntawm parsing. Parsing yog ib qho chaw uas Moment hloov tau yooj yim dua li qhov built-in Temporal API. Koj tuaj yeem txheeb xyuas cov kab hnub los ntawm kev hla nws mus rau lub sijhawm ua haujlwm. Nrog rau ib qho kev sib cav, Moment xav tau ib txoj hlua ISO hnub, tab sis koj tuaj yeem siv lwm hom ntawv yog tias koj muab qhov kev sib cav thib ob uas qhia txog hnub uas siv.
const isoDate = moment('2026-02-21T09:00:00'); const formattedDate = moment('2/21/26 9:00:00', 'M/D/YY h:mm:ss');
console.log(isoDate); // Moment<2026-02-21T09:00:00-05:00>
console.log(formattedDate); // Moment<2026-02-21T09:00:00-05:00>
Hauv cov ntawv qub, Moment yuav ua qhov kev kwv yees zoo tshaj plaws los txheeb xyuas cov kab hnub uas tsis txaus ntseeg. Qhov no tuaj yeem ua rau cov txiaj ntsig tsis tau tshwm sim. Piv txwv li, yog 02-03-2026 Lub Ob Hlis 2 lossis Lub Peb Hlis 3? Vim li no, cov ntawv tshiab ntawm Moment tso tawm cov lus ceeb toom tsis txaus ntseeg yog tias nws tau hu tsis muaj ISO formatted hnub hlua (tshwj tsis yog qhov kev sib cav thib ob nrog cov hom xav tau kuj tau muab). Temporal tsuas yog parse ib qho tshwj xeeb formatted hnub kab. Cov hlua yuav tsum tau ua raws li ISO 8601 hom lossis nws qhov txuas ntxiv, RFC 9557. Yog tias txoj hlua tsis ua raws hnub tau dhau mus rau ib txoj hauv kev, Temporal yuav pov qhov RangeError.
// Siv RFC 9557 hnub txoj hlua 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 Nws
// Siv cov hlua tsis paub hnub tim const otherDate = Temporal.Instant.from('2/21/26 9:00:00'); // RangeError: Temporal yuam kev: Invalid cim thaum parsing xyoo tus nqi.
Qhov yuav tsum tau muaj tseeb ntawm txoj hlua hnub nyob ntawm seb hom Temporal yam koj tab tom tsim. Hauv qhov piv txwv saum toj no, Temporal.Instant yuav tsum muaj tag nrho ISO8601 lossis RFC 9557 hnub txoj hlua qhia hnub thiab lub sijhawm nrog lub sijhawm thaj tsam offset, tab sis koj tuaj yeem tsim cov khoom siv PlainDate lossis PlainTime siv tsuas yog ib feem ntawm cov qauv hnub. 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 Nws
Nco ntsoov tias cov hlua no tseem yuav tsum ua raws li qhov xav tau, lossis qhov yuam kev yuav raug muab pov tseg.
// Siv cov hlua tsis ua raws sijhawm. Tag nrho cov no yuav cuam tshuam RangeError. Temporal.PlainTime.from('9:00'); Temporal.PlainTime.from('9:00:00 AM');
Pro cov lus qhia: Kev tuav cov hlua uas tsis yog ISOVim tias Temporal tseem ceeb rau kev ntseeg siab, nws yuav tsis sim kwv yees cov qauv ntawm txoj hlua zoo li 02-01-2026. Yog tias koj cov ntaub ntawv siv cov hlua zoo li no, koj yuav tsum tau ua qee txoj hlua siv los kho cov txiaj ntsig rau hauv cov hlua ISO xws li 2026-02-01 ua ntej sim siv nws nrog Temporal.
Formatting Thaum koj muaj Moment lossis Temporal khoom, tej zaum koj yuav xav hloov nws mus rau ib txoj hlua formatted ntawm qee lub sijhawm. Qhov no yog ib qho piv txwv uas Moment yog me ntsis ntxiv terse. Koj hu rau cov khoom tus qauv qauv nrog ib txoj hlua ntawm tokens uas piav qhia txog hom hnub xav tau. const date = moment();
console.log(date.format('MM/DD/YYYY')); // 02/22/2026
console.log(date.format('MMMM Ua YYYY, h:mm:ss a')); // 22 Lub Ob Hlis 2026, 8:18:30 teev tsaus ntuj
Ntawm qhov tod tes, Temporal xav kom koj ua ib qho lus me ntsis ntxiv. Cov khoom ib ntus, xws li Instant, muaj txoj hauv kev rauLocaleString uas lees txais ntau hom kev xaiv xaiv tau teev tseg raws li cov khoom ntawm ib qho khoom.
const date = Temporal.Now.instant();
// tsis muaj kev sib cav, peb yuav tau txais cov qauv qub rau thaj chaw tam sim no console.log(date.toLocaleString()); // 2/22/2026, 8:23:36 PM (xav tau ib lub zos ntawm en-US)
// pass formatting xaiv los tsim ib txoj hlua kev cai hom console.log(date.toLocaleString('en-US', { hli: 'ntev', hnub: 'numeric', xyoo: 'tus lej', teev: '2-tus lej', feeb: '2-tus lej' })); // 22 Lub Ob Hlis 2026 ntawm 8:23 teev tsaus ntuj
// tsuas yog hla cov teb koj xav tau hauv txoj hlua hom console.log(date.toLocaleString('en-US', { hli: 'luv', hnub: 'numeric' })); // Peb 22
Hnub tim formatting yeej siv lub Intl.DateTimeFormat API (uas twb tau yooj yim muaj nyob rau hauv niaj hnub browsers) nyob rau hauv lub hood. Qhov ntawd txhais tau tias koj tuaj yeem tsim ib qho khoom siv rov siv tau DateTimeFormat nrog koj cov kev cai formatting xaiv, tom qab ntawd dhau Temporal cov khoom rau nws hom hom. Vim li no, nws tsis txhawb kev cai hnub tawm tswv yim zoo li Moment ua. Yog tias koj xav tau qee yam xws li 'Q1 2026' lossis lwm yam tshwj xeeb formatting, koj yuav xav tau qee qhov kev cai hnub formatting code lossis ncav cuag lub tsev qiv ntawv thib peb. const formatter = tshiab Intl.DateTimeFormat('en-US', { hli: '2-tus lej', hnub: '2-tus lej', xyoo: 'tus lej' });
const date = Temporal.Now.instant(); console.log(formatter.format(date)); // 02/22/2026
Moment's formatting tokens yooj yim sau, tab sis lawv tsis nyob hauv zos. Cov kab ntawv "txoj cai nyuaj" yam zoo li lub hli / hnub xaj. Qhov zoo ntawm kev siv cov khoom teeb tsa, raws li Temporal ua, yog tias nws yuav cia li hloov mus rau ib qho chaw twg thiab siv hom ntawv raug. const date = Temporal.Now.instant();
const formatOptions = { hli: 'numeric', hnub: 'numeric', xyoo: 'tus lej' };
console.log(date.toLocaleString('en-US', formatOptions)); // 22/2/2026
console.log(date.toLocaleString('en-GB', formatOptions)); // 22/02/2026
Kev suav hnub Hauv ntau daim ntawv thov, koj yuav tsum tau ua tiav qee qhov kev suav ntawm hnub. Tej zaum koj yuav xav ntxiv lossis rho cov units ntawm lub sijhawm (hnub, teev, vib nas this, thiab lwm yam). Piv txwv li, yog tias koj muaj hnub tam sim no, koj tuaj yeem xav qhia tus neeg siv hnub tim 1 lub lis piam txij tam sim no. Moment objects muaj txoj hauv kev xws li ntxiv thiab rho tawm uas ua cov haujlwm no. Cov haujlwm no siv tus nqi thiab ib chav tsev, piv txwv li: ntxiv (7, 'hnub'). Ib qho tseem ceeb sib txawv ntawm Moment thiab Temporal, txawm li cas los xij, yog tias thaum ua cov hnub suav hnub no, cov khoom siv hauv qab tau hloov kho thiab nws tus nqi qub ploj. const now = moment();
console.log(tam sim no); // Moment<2026-02-24T20:08:36-05:00>
const nextWeek = now.add(7, 'hnub'); console.log(NextWeek); // Moment<2026-03-03T20:08:36-05:00>
// Gotcha - qhov khoom qub tau hloov pauv console.log(tam sim no); // Moment<2026-03-03T20:08:36-05:00>
Txhawm rau kom tsis txhob poob lub hnub qub, koj tuaj yeem hu rau clone ntawm Moment object los tsim ib daim qauv. const tam sim no= moment(); const nextWeek = now.clone().add(7, 'hnub');
console.log(tam sim no); // Moment<2026-02-24T20:12:55-05:00>
console.log(NextWeek); // Moment<2026-03-03T20:12:55-05:00>
Ntawm qhov tod tes, cov khoom Temporal yog hloov tsis tau. Thaum koj tau tsim ib yam khoom zoo li Instant, PlainDate, thiab lwm yam, tus nqi ntawm cov khoom ntawd yuav tsis hloov. Cov khoom ib ntus kuj muaj cov txheej txheem ntxiv thiab rho tawm. Temporal yog me ntsis picky txog cov sij hawm twg tuaj yeem ntxiv rau cov khoom hom twg. Piv txwv li, koj tsis tuaj yeem ntxiv hnub rau Instant:
const tam sim no = Temporal.Now.instant(); const nextWeek = now.add({hnub: 7 }); // RangeError: Temporal yuam kev: chav loj tshaj plaws tsis tuaj yeem yog hnub tim
Qhov no yog vim cov khoom Instant sawv cev rau lub sijhawm tshwj xeeb hauv UTC thiab yog daim ntawv qhia hnub-agnostic. Vim tias qhov ntev ntawm ib hnub tuaj yeem hloov pauv raws li cov cai hauv cheeb tsam xws li Hnub Teeb Txuag Sijhawm, qhov kev suav no tsis muaj nyob rau ntawm Instant. Txawm li cas los xij, koj tuaj yeem ua qhov haujlwm no ntawm lwm yam khoom, xws li PlainDateTime: const tam sim no = Temporal.Now.plainDateTimeISO(); console.log(now.toLocaleString()); // 24.02.2026 08:23:59 TSİ
const nextWeek = now.add({hnub: 7 });
// Nco ntsoov tias thawj PlainDateTime tseem tsis hloov pauv console.log(now.toLocaleString()); // 24.02.2026 08:23:59 TSİ
console.log(nextWeek.toLocaleString()); // 3/3/2026, 08:23:59 PM lawm
Koj tseem tuaj yeem suav tias lub sijhawm nyob nruab nrab ntawm ob lub Moment lossis Temporal cov khoom. Nrog Moment's diff muaj nuj nqi, koj yuav tsum muab ib chav rau granularity, txwv tsis pub nws yuav rov qab qhov sib txawv hauv milliseconds. const date1 = moment('2026-02-21T09:00:00'); const date2 = moment('2026-02-22T10:30:00');
console.log(date2.diff(date1)); // 9180000
console.log(date2.diff(date1, 'hnub')); // 1
Txhawm rau ua qhov no nrog Temporal object, koj tuaj yeem dhau lwm yam khoom Temporal rau nws mus txog lossis txij li txoj kev. Qhov no xa rov qab rau Temporal.Duration khoom uas muaj cov ntaub ntawv hais txog lub sijhawm sib txawv. Cov khoom Duration muaj cov khoom rau txhua qhov sib txawv, thiab tseem tuaj yeem tsim cov hlua ntev ISO 8601 uas sawv cev rau lub sijhawm sib txawv.
const date1 = Temporal.PlainDateTime.from('2026-02-21T09:00:00'); const date2 = Temporal.PlainDateTime.from('2026-02-22T10:30:00');
// biggestUnit qhia cov chav loj tshaj plaws ntawm lub sijhawm los sawv cev // nyob rau hauv lub sij hawm xam const diff = date2.since(date1, { biggestUnit: 'hnub' });
console.log(diff.days); // 1
console.log(diff.hours); // 1
console.log(diff.minutes); // 30
console.log(diff.toString()); // P1DT1H30M // (ISO 8601 txoj hlua ntev: 1 hnub, 1 teev, 30 feeb)
Sib piv Hnub Thiab Sijhawm Moment thiab Temporal ob leeg cia koj sib piv cov hnub thiab lub sijhawm los txiav txim seb qhov twg los ua ntej lwm qhov, tab sis siv cov kev sib txawv nrog API. Moment muab txoj hauv kev xws li isBefore, isAfter, thiab isSame los piv ob Moment khoom. const date1 = moment('2026-02-21T09:00:00'); const date2 = moment('2026-02-22T10:30:00');
console.log(date1.isBefore(date2)); // tseeb
Temporal siv txoj kev sib piv zoo li qub los ua qhov sib piv ntawm ob yam khoom ntawm tib hom. Nws rov -1 yog tias thawj hnub los ua ntej thib ob, 0 yog tias lawv sib npaug, lossis 1 yog thawj hnub los tom qab thib ob. Cov piv txwv hauv qab no qhia tau hais tias yuav piv ob yam khoom PlainDate li cas. Ob qhov kev sib cav rau Temporal.PlainDate.compare yuav tsum yog cov khoom PlainDate.
const date1 = Temporal.PlainDate.from({ xyoo: 2026, hli: 2, hnub: 24 }); const date2 = Temporal.PlainDate.from({ xyoo: 2026, hli: 3, hnub: 24 });
// date1 los ua ntej date2, yog li -1 console.log(Temporal.PlainDate.compare(date1, date2));
// yuam kev yog peb sim muab ob yam khoom sib txawv console.log(Temporal.PlainDate.compare(date1, Temporal.Now.instant())); // TypeError: Temporal yuam kev: Invalid PlainDate teb muab.
Tshwj xeeb, qhov no ua rau nws yooj yim los txheeb xyuas cov khoom ntawm Temporal khoom raws sijhawm. // Ib qho array ntawm Temporal.PlainDate khoom const dates = [... ];
// siv Temporal.PlainDate.compare raws li kev sib piv muaj nuj nqi dates.sort(Temporal.PlainDate.compare);
Sijhawm Zone Hloov Lub tsev qiv ntawv Moment tseem ceeb tsis txhawb kev hloov pauv hauv lub sijhawm. Yog tias koj xav tau qhov kev ua haujlwm no, koj kuj yuav tsum tau nruab lub sijhawm-timezone pob. Cov pob no tsis yog tsob ntoo-shakable, thiab yog li ntawd tuaj yeem ntxiv qhov tseem ceeb rau koj cov pob loj. Thaum koj tau teeb tsa lub sijhawm-timezone, koj tuaj yeem hloov Moment cov khoom mus rau thaj chaw sib txawv nrog tz txoj kev. Raws li nrog rau lwm cov haujlwm Moment, qhov no mutates lub hauv pauskhoom. // Assuming US Eastern lub sij hawm const now = moment(); console.log(tam sim no); // Moment<2026-02-28T20:08:20-05:00>
// Hloov mus rau lub sijhawm Pacific. // Lub sij hawm qub Eastern ploj lawm. now.tz('America/Los_Angeles'); console.log(tam sim no); // Moment<2026-02-28T17:08:20-08:00>
Lub sijhawm ua haujlwm ua haujlwm tau ua rau hauv Temporal API thaum siv Temporal.ZonedDateTime khoom. Cov khoom no suav nrog txoj hauv kev nrogTimeZone uas xa rov qab ZonedDateTime tshiab uas sawv cev rau tib lub sijhawm hauv lub sijhawm, tab sis nyob rau hauv lub sijhawm teev tseg. // Ib zaug ntxiv, piv txwv li US Eastern lub sijhawm const tam sim no = Temporal.Now.zonedDateTimeISO(); console.log(now.toLocaleString()); // 2/28/2026, 08:12:02 PM EST
// Hloov mus rau lub sijhawm Pacific const nowPacific = now.withTimeZone('America/Los_Angeles'); console.log(nowPacific.toLocaleString()); // 2/28/2026, 5:12:02 PM PST
// Cov khoom qub tseem tsis hloov pauv console.log(now.toLocaleString()); // 2/28/2026, 08:12:02 PM EST
Nco tseg: Cov txiaj ntsig formatted xa rov qab los ntawm toLocaleString yog, raws li lub npe cuam tshuam, nyob ntawm thaj chaw. Tus qauv code tau tsim nyob rau hauv en-US thaj chaw, yog li cov hom ntawv zoo li no: 2/28/2026, 5:12:02 PM PST. Hauv lwm thaj chaw, qhov no yuav txawv. Piv txwv li, hauv thaj chaw en-GB, koj yuav tau txais qee yam zoo li 28/2/2026, 17:12:02 GMT-8. Lub ntiaj teb tiag Refactoring Piv txwv tias peb tab tom tsim ib qho app rau teem sijhawm cov xwm txheej thoob plaws lub sijhawm. Ib feem ntawm cov app no yog ib txoj haujlwm, getEventTimes, uas siv cov hlua ISO 8601 sawv cev rau lub sijhawm thiab hnub tim ntawm qhov kev tshwm sim, ib cheeb tsam lub sijhawm, thiab lub hom phiaj lub sijhawm. Qhov kev ua haujlwm tsim cov sijhawm formatted thiab hnub tim rau cov xwm txheej hauv ob lub sijhawm. Yog tias qhov kev ua haujlwm tau muab cov hlua nkag uas tsis yog lub sijhawm siv tau / hnub, nws yuav cuam tshuam qhov yuam kev. Nov yog thawj qhov kev siv, siv Moment (tseem yuav tsum tau siv lub sijhawm-timezone pob).
import lub sij hawm los ntawm 'moment-timezone';
muaj nuj nqi getEventTimes(inputString, userTimeZone, targetTimeZone) { const timeFormat = 'MMM D, YYYY, h:mm:ss a z';
// 1. Tsim lub sijhawm pib ntawm tus neeg siv lub sijhawm const eventTime = moment.tz( inputString, moment.ISO_8601, // Cia siab tias yuav muaj ib txoj hlua ISO 8601 tseeb, // Kev sib cais nruj userTimeZone );
// Pov qhov yuam kev yog tias inputString tsis sawv cev rau hnub tim yog tias (!eventTime.isValid()) { pov tshiab yuam kev('Invalid date/time input'); }
// 2. Xam lub sij hawm lub hom phiaj // CRITICAL: Peb yuav tsum tau clone, lossis 'eventTime' hloov mus ib txhis! const targetTime = eventTime.clone().tz(targetTimeZone);
rov qab { local: eventTime.format(timeFormat), hom phiaj: targetTime.format(timeFormat), }; }
const teem caij = getEventTimes( '2026-03-05T15:00-05:00", 'America/New_York', 'Tebchaws Europe/London', );
console.log(schedule.local); // Mar 5, 2026, 3:00:00 teev tsaus ntuj EST
console.log(schedule.target); // Mar 5, 2026, 8:00:00 teev tsaus ntuj GMT
Hauv qhov piv txwv no, peb tab tom siv cov qauv hnub xav tau ntawm ISO 8601, uas yog pab tau tsim rau Moment. Peb kuj tseem siv kev ntsuas nruj, uas txhais tau tias Moment yuav tsis sim twv nrog cov kab hnub uas tsis phim cov hom ntawv. Yog tias txoj hlua tsis yog ISO hnub dhau lawm, nws yuav ua rau qhov khoom siv tsis raug, thiab peb muab qhov yuam kev. Kev siv Temporal zoo li zoo sib xws, tab sis muaj qee qhov sib txawv tseem ceeb.
muaj nuj nqi getEventTimes(inputString, userTimeZone, targetTimeZone) { // 1. Parse cov tswv yim ncaj qha rau hauv Instant, ces tsim // ib ZonedDateTime nyob rau hauv tus neeg siv lub cheeb tsam. const instant = Temporal.Instant.from(inputString); const eventTime = instant.toZonedDateTimeISO(userTimeZone);
// 2. Hloov mus rau thaj chaw phiaj xwm // Qhov no cia li rov qab ib yam khoom tshiab; 'eventTime' muaj kev nyab xeeb. const targetTime = eventTime.withTimeZone(targetTimeZone);
// 3. Hom ntawv siv Intl (built-in) const options = { xyoo: 'tus lej', hli: 'luv', hnub: 'numeric', teev: 'numeric', feeb: '2-tus lej', thib ob: '2-tus lej', TimeZoneName: 'luv' };
rov qab { local: eventTime.toLocaleString(navigator.language, kev xaiv), hom phiaj: targetTime.toLocaleString(navigator.language, xaiv) }; }
const teem caij = getEventTimes( '2026-03-05T15:00-05:00", 'America/New_York', 'Tebchaws Europe/London', );
console.log(schedule.local); // Mar 5, 2026, 3:00:00 teev tsaus ntuj EST
console.log(schedule.target); // Mar 5, 2026, 8:00:00 teev tsaus ntuj GMT
Nrog Moment, peb yuav tsum qhia meej meej ib txoj hlua hom rau cov hlua hnub tshwm sim. Txawm hais tias tus neeg siv qhov chaw nyob lossis thaj chaw, lub sijhawm tshwm sim yuav raug formatted li Mar 5, 2026, 3:00:00pm EST. Tsis tas li ntawd, peb tsis tas yuav qhia meej meej qhov kev zam. Yog hais tias ib txoj hlua tsis raug hla mus rau Temporal.Instant.from, Temporal yuav pov qhov kev zam rau peb. Ib yam uas yuav tsum nco ntsoov yog tias txawm tias nrog kev sib cais nruj, Moment version tseem yog qhov yooj yim dua. Temporal xav tau lub sijhawm thaj tsam offset thaum kawg ntawm txoj hlua. Koj yuav tsum nco ntsoov tias txij li thaum peb tab tom siv navigator.language, cov cai no tsuas yog khiav hauv ib puag ncig browser, vim tias navigator tsis tau txhais nyob rau hauv ib puag ncig Node.js. Kev siv sijhawm ib ntus siv qhov browser qhov chaw tam sim no (navigator.language), yog li tus neeg siv yuav tau txais cov sijhawm tshwm sim hauv lawv lub sijhawm hauv zos. Hauv cheeb tsam en-US, qhov no yog Mar 5, 2026, 3:00:00 teev tsaus ntuj EST. Txawm li cas los xij, yog tias tus neeg siv nyob hauv London, piv txwv li, lub sijhawm tshwm sim yuav raug formatted li 5 Mar 2026, 15:00:00 GMT-5. Cov ntsiab lus
Kev ua Moment.js Temporal Lub sijhawm tam sim no lub sijhawm ( ) Temporal.Now.zonedDateTimeISO() Kev txheeb xyuas ISO lub sijhawm (str) Temporal.Instant.from(str) Ntxiv sijhawm .add(7, 'hnub') (mutates) .add({hnub: 7 }) (cov khoom tshiab) Qhov txawv .diff(lwm, 'teev') .since(lwm).hours Sijhawm tsam .tz('Zone/Npe') .withTimeZone('Zone/Npe')
Thaum xub thawj siab ib muag, qhov txawv tej zaum yuav txawv me ntsis (thiab nyob rau hauv cov ntaub ntawv ntawm Temporal, tej zaum ntau verbose thiab nruj dua) syntax, tab sis muaj ob peb yam tseem ceeb zoo rau siv Temporal tshaj Moment.js:
Ua kom meej meej txhais tau tias tsawg dua kev xav tsis thoob thiab cov kab tsis xav tau. Lub sijhawm no yuav tshwm sim ntau dua, tab sis nws suav nrog "kev kwv yees," uas qee zaum tuaj yeem ua rau hnub tsis raug. Yog tias koj muab Temporal ib yam dab tsi tsis raug, nws cuam tshuam qhov yuam kev. Yog hais tias tus lej khiav, koj paub tias koj muaj hnub tim uas siv tau. Lub sijhawm tuaj yeem ntxiv qhov loj me rau daim ntawv thov cov pob khoom, tshwj xeeb yog tias koj siv lub sijhawm-lub sijhawm pob. Temporal ntxiv tsis muaj dab tsi (thaum nws xa tuaj rau hauv koj lub hom phiaj browsers). Immutability muab kev ntseeg siab rau koj tias koj yuav tsis poob lossis sau cov ntaub ntawv thaum ua hnub hloov pauv thiab ua haujlwm. Cov sawv cev sib txawv ntawm lub sijhawm (Instant, PlainDateTime, ZonedDateTime) nyob ntawm koj qhov yuav tsum tau ua, qhov twg Moment yog ib txwm qhwv ib ncig ntawm UTC timestamp. Temporal siv Intl APIs rau hnub formatting, uas txhais tau hais tias koj tuaj yeem muaj qhov kev paub hauv cheeb tsam tsis tas yuav qhia meej tokens.
Cov ntawv sau rau ntawm Polyfill Raws li tau hais ua ntej, muaj Temporal polyfill muaj, muab faib ua npm pob npe hu ua @js-temporal/polyfill. Yog tias koj xav siv Temporal hnub no, koj yuav xav tau qhov polyfill no los txhawb cov browsers zoo li Safari uas tseem tsis tau xa mus rau API. Cov xov xwm phem nrog qhov no yog tias nws yuav ntxiv rau koj cov pob loj. Qhov xwm zoo yog tias nws tseem ntxiv tsawg dua lub sijhawm lossis lub sijhawm-lub sijhawm. Nov yog qhov sib piv ntawm cov pob ntau thiab tsawg raws li qhia los ntawm Bundlephobia.com, lub vev xaib uas nthuav tawm cov ntaub ntawv ntawm npm pob qhov ntau thiab tsawg (nias rau ntawm txhua lub npe pob kom pom Bundlephobia tsom xam):
Pob Tsawg tsawg Minified & gzipped @js-temporal/polyfill 154.1 kB 44.1 kB ib pliag 2 94.4kb 7 5.4kb lub sij hawm-timezone 1 MB 114.2 kB
Lub polyfill kuj muaj keeb kwm muaj qee qhov teeb meem kev ua haujlwm nyob ib puag ncig kev siv nco, thiab thaum lub sijhawm sau ntawv, nws tau suav tias yog nyob rau hauv lub xeev alpha. Vim li no, tej zaum koj yuav tsis xav siv nws nyob rau hauv ntau lawm kom txog rau thaum nws mus txog ib tug ntau paub tab lub xeev. Lwm cov xov xwm zoo yog tias vam tias cov polyfill yuav tsis xav tau ntev dua (tshwj tsis yog koj yuav tsum txhawb nqa cov browser qub, tau kawg). Thaum lub sijhawm sau ntawv, Temporal tau xa hauv Chrome, Edge, thiab Firefox. Nws tseem tsis tau npaj txhij nyob rau hauv Safari tseem, txawm hais tias nws zoo nkaus li muaj nrog tus chij runtime ntawm qhov tseeb Technology Saib ua ntej.