JavaScript တွင်ရေးထားသော မည်သည့်အပလီကေးရှင်းမဆို အချိန်နှင့်ရက်စွဲများဖြင့် အလုပ်လုပ်ပါသည်။ အစပိုင်းတွင်၊ ၎င်းကို built-in Date API တွင်ကန့်သတ်ထားသည်။ ဤ API တွင် အခြေခံလုပ်ဆောင်နိုင်စွမ်းများ ပါဝင်သော်လည်း ၎င်းလုပ်ဆောင်နိုင်သည့်အရာတွင် အကန့်အသတ်ရှိသည်။ Moment.js ကဲ့သို့သော Third-party စာကြည့်တိုက်များနှင့် Intl APIs နှင့် Temporal API အသစ်ကဲ့သို့သော နောက်ပိုင်းတွင် built-in API များသည် အချိန်နှင့်ရက်စွဲများနှင့်အတူ လုပ်ဆောင်ရန် ပိုမိုပြောင်းလွယ်ပြင်လွယ်ရှိစေသည်။ The Rise and Fall of Moment.js Moment.js သည် အချိန်နှင့် ရက်စွဲများနှင့်အတူ အလုပ်လုပ်ရန် အစွမ်းထက်သော အသုံးဝင်မှုများပါရှိသော JavaScript စာကြည့်တိုက်တစ်ခုဖြစ်သည်။ ၎င်းတွင် အချိန်ဇုန် ခြယ်လှယ်ခြင်းကဲ့သို့သော အခြေခံ Date API မှ လွဲမှားနေသော အင်္ဂါရပ်များ ပါ၀င်ပြီး အများသုံးလုပ်ဆောင်မှုများကို ပိုမိုရိုးရှင်းစေသည်။ Moment တွင် ရက်စွဲများနှင့် အချိန်များကို ဖော်မတ်ချခြင်းအတွက် လုပ်ဆောင်ချက်များ ပါဝင်သည်။ ၎င်းသည် မတူညီသော အပလီကေးရှင်းများစွာတွင် အသုံးများသော စာကြည့်တိုက်တစ်ခု ဖြစ်လာခဲ့သည်။ သို့သော် Moment တွင်လည်း ၎င်း၏ဝေစုပြဿနာများရှိသည်။ ၎င်းသည် ကြီးမားသော ဒစ်ဂျစ်တိုက်တစ်ခုဖြစ်ပြီး အပလီကေးရှင်း၏အစုအဝေးအရွယ်အစားသို့ သိသိသာသာထည့်နိုင်သည်။ စာကြည့်တိုက်သည် သစ်ပင်လှုပ်ခြင်းကို မပံ့ပိုးနိုင်သောကြောင့် (ဒစ်ဂျစ်တိုက်များ၏ အသုံးမပြုသောအစိတ်အပိုင်းများကို ဖယ်ရှားနိုင်သည့် ခေတ်မီအစုအဝေးများ) ၏လုပ်ဆောင်ချက်များကို သင်တစ်ဦး သို့မဟုတ် နှစ်ခုသာ အသုံးပြုထားသော်လည်း Moment စာကြည့်တိုက်တစ်ခုလုံးတွင် ပါဝင်ပါသည်။ Moment ၏နောက်ထပ်ပြဿနာမှာ ၎င်းဖန်တီးထားသည့်အရာဝတ္ထုများသည် ပြောင်းလဲနိုင်သောအချက်ဖြစ်သည်။ Moment object တစ်ခုပေါ်ရှိ အချို့သောလုပ်ဆောင်ချက်များကို ခေါ်ဆိုခြင်းသည် ဘေးထွက်ဆိုးကျိုးရှိပြီး ထိုအရာဝတ္ထု၏တန်ဖိုးကို ပြောင်းလဲစေသည်။ ၎င်းသည် မမျှော်လင့်ထားသော အပြုအမူ သို့မဟုတ် အမှားအယွင်းများကို ဖြစ်ပေါ်စေနိုင်သည်။ 2020 ခုနှစ်တွင် Moment ၏ ထိန်းသိမ်းသူများသည် စာကြည့်တိုက်ကို ပြုပြင်ထိန်းသိမ်းမှုမုဒ်တွင် ထည့်သွင်းရန် ဆုံးဖြတ်ခဲ့သည်။ အင်္ဂါရပ်အသစ် တီထွင်ဖန်တီးမှု မလုပ်ရသေးဘဲ ပရောဂျက်အသစ်များအတွက် ပြုပြင်ထိန်းသိမ်းသူများသည် ၎င်းကို အသုံးပြုခြင်းမှ ရှောင်ကြဉ်ရန် အကြံပြုထားသည်။ date-fns ကဲ့သို့သော အခြားသော JavaScript ရက်စွဲစာကြည့်တိုက်များ ရှိပါသည်၊ သို့သော် JavaScript- Temporal တွင် တိုက်ရိုက်တည်ဆောက်ထားသော API သည် မြို့ထဲတွင် ကစားသူအသစ်တစ်ခု ရှိပါသည်။ ၎င်းသည် မူလ Date API ၏ အပေါက်များတွင် ဖြည့်ပေးသည့်အပြင် Moment နှင့် အခြားသော စာကြည့်တိုက်များတွင် တွေ့ရသော ကန့်သတ်ချက်အချို့ကို ဖြေရှင်းပေးသည့် စံအသစ်တစ်ခုဖြစ်သည်။ Temporal ဆိုတာ ဘာလဲ Temporal သည် ခေတ်မီ JavaScript ကိုသတ်မှတ်ပေးသည့် ECMAScript စံနှုန်းတွင် ထည့်သွင်းထားသည့် အချိန်နှင့်ရက်စွဲ API အသစ်ဖြစ်သည်။ မတ်လ 20266 တွင်၊ ၎င်းသည် TC39 လုပ်ငန်းစဉ်၏ အဆင့် 4 သို့ရောက်ရှိနေပြီဖြစ်ကြောင်း (အဆိုပြုချက်များနှင့် JavaScript ဘာသာစကားကို ထပ်လောင်းကြီးကြပ်သည့်ကော်မတီ) မှ ECMAScript သတ်မှတ်ချက်၏ နောက်ဗားရှင်းတွင် ထည့်သွင်းမည်ဖြစ်သည်။ Safari သည် မကြာမီတွင် ထွက်ပေါ်လာမည့် Safari ဖြင့် Chrome 144+ နှင့် Firefox 139+ တို့ကို ဘရောက်ဆာများစွာတွင် အကောင်အထည်ဖော်ပြီးဖြစ်သည်။ polyfill ကို ပံ့ပိုးမထားသော ဘရောက်ဆာများနှင့် Node.js များအတွက်လည်း ရနိုင်ပါသည်။ Temporal API သည် ယေဘူယျအားဖြင့် အချိန်ကာလကို ကိုယ်စားပြုသည့် အရာများကို ဖန်တီးသည်။ ၎င်းတို့သည် သတ်မှတ်ထားသော အချိန်ဇုန်ရှိ အချိန်ပြည့်နှင့် ရက်စွဲတံဆိပ်ခေါင်းများ ဖြစ်နိုင်သည်၊ သို့မဟုတ် ၎င်းတို့သည် အချိန်ဇုန် သို့မဟုတ် ရက်စွဲအချက်အလက်များမပါဘဲ "တိုင်ကပ်နာရီ" အချိန်၏ ယေဘူယျဥပမာတစ်ခု ဖြစ်နိုင်သည်။ Temporal ၏ အဓိကအင်္ဂါရပ်အချို့ ပါဝင်သည်။

ရက်စွဲများပါရှိသည့် သို့မဟုတ် မရှိသည့်အချိန်များ။ ယာယီအရာဝတ္ထုသည် တိကျသောရက်စွဲတစ်ခုရှိ အချိန်တစ်ခု သို့မဟုတ် မည်သည့်ရက်စွဲအချက်အလက်မျှမပါဘဲ အချိန်တစ်ခုကို ကိုယ်စားပြုနိုင်သည်။ အချိန်မလိုပဲ သီးခြားရက်စွဲကိုလည်း ကိုယ်စားပြုနိုင်ပါတယ်။ အချိန်ဇုန် ပံ့ပိုးမှု။ ယာယီအရာဝတ္ထုများသည် အချိန်ဇုန်ကို အပြည့်အဝသိရှိပြီး မတူညီသောအချိန်ဇုန်များတစ်လျှောက်တွင် ပြောင်းလဲနိုင်သည်။ Moment သည် အချိန်ဇုန်များကို ပံ့ပိုးပေးသည်၊ သို့သော် ၎င်းသည် နောက်ထပ် အခိုက်အတန့်အချိန်ဇုန် စာကြည့်တိုက် လိုအပ်ပါသည်။ မပြောင်းလဲနိုင်ခြင်း။ ယာယီအရာဝတ္ထုကို ဖန်တီးပြီးသည်နှင့် ၎င်းကို ပြောင်းလဲ၍မရပါ။ အချိန်ဂဏန်းသင်္ချာ သို့မဟုတ် အချိန်ဇုန်ပြောင်းလဲခြင်းများသည် အရင်းခံအရာဝတ္တုကို မွမ်းမံခြင်းမပြုပါ။ ယင်းအစား၊ ၎င်းတို့သည် Temporal object အသစ်တစ်ခုကို ထုတ်လုပ်သည်။ 1-based indexing. Date API (အပြင် Moment နှင့်) ပါရှိသော အမှားအယွင်းများ၏ ဘုံရင်းမြစ်တစ်ခုမှာ လများကို သုည-အညွှန်းခံထားပါသည်။ ဆိုလိုသည်မှာ ဇန်န၀ါရီသည် ကျွန်ုပ်တို့အားလုံး လက်တွေ့ဘ၀တွင် ကျွန်ုပ်တို့အားလုံး နားလည်ထားသည့်အတိုင်း လ ၁ ထက် ဇန်န၀ါရီလဖြစ်သည်။ 1-based အညွှန်းကိန်းကို အသုံးပြု၍ ယာယီပြင်ဆင်သည် — ဇန်နဝါရီသည် လ 1 ဖြစ်သည်။ ၎င်းကို browser တွင်တည်ဆောက်ထားသည်။ Temporal သည် browser ကိုယ်တိုင်ရှိ API တစ်ခုဖြစ်သောကြောင့်၊ ၎င်းသည် သင့်အပလီကေးရှင်း၏အစုအဝေးအရွယ်အစားသို့ဘာမှမထည့်ပါ။

Date API သည် ပျောက်ကွယ်သွားမည်မဟုတ်ကြောင်းကိုလည်း သတိပြုရန် အရေးကြီးပါသည်။ Temporal သည် ဤ API ကို အစားထိုးနေစဉ်၊ ၎င်းကို ဖယ်ရှားခြင်း သို့မဟုတ် ရပ်ဆိုင်းထားခြင်းမရှိပါ။ ဘရောက်ဆာများသည် Date API ကို ရုတ်တရက် ဖယ်ရှားပါက အပလီကေးရှင်းများစွာ ပျက်သွားနိုင်သည်။ သို့သော်လည်း Moment သည် ယခုအခါ ပြုပြင်ထိန်းသိမ်းမှုမုဒ်တွင် အမွေအနှစ်ပရောဂျက်တစ်ခုအဖြစ် သတ်မှတ်ခံထားရကြောင်းကိုလည်း သတိပြုပါ။ ကျန်ဆောင်းပါးများတွင်၊ Moment-based code ကို Temporal API အသစ်သို့ ရွှေ့ပြောင်းရန်အတွက် အချို့သော "ချက်ပြုတ်နည်းများ" ကို ကြည့်ပါမည်။ ပြန်လည်ပြင်ဆင်မှု စတင်ကြပါစို့။ ရက်စွဲနှင့် အချိန် အရာဝတ္ထုများ ဖန်တီးခြင်း။ ရက်စွဲများနှင့် အချိန်များကို ကျွန်ုပ်တို့ မကိုင်တွယ်မီ၊ ၎င်းတို့ကို ကိုယ်စားပြုသည့် အရာဝတ္ထုများကို ဖန်တီးရပါမည်။ လက်ရှိရက်စွဲနှင့်အချိန်ကိုကိုယ်စားပြုသည့် Moment အရာဝတ္ထုတစ်ခုဖန်တီးရန်၊ အခိုက်အတန့်လုပ်ဆောင်ချက်ကို အသုံးပြုပါ။ const now = moment(); console.log(ယခု); // အခိုက်အတန့်<2026-02-18T21:26:29-05:00>

ယခု ဤအရာဝတ္ထုကို လိုအပ်သလို ဖော်မတ် သို့မဟုတ် ခြယ်လှယ်နိုင်ပါပြီ။

// UTC သို့ပြောင်းပါ။ //သတိပေးချက်- ၎င်းသည် Moment အရာဝတ္ထုကို ပြောင်းလဲစေပြီး UTC မုဒ်တွင် ထည့်ထားသည်။ console.log(now.utc()); // Moment<2026-02-19T02:26:29Z>

// ဖော်မတ်လုပ်ထားသော စာကြောင်းကို ပရင့်ထုတ်ခြင်း - ၎င်းသည် UTC အချိန်ကို ယခုအသုံးပြုနေကြောင်း သတိပြုပါ။ console.log(now.format('MM/DD/YYYY hh:mm:ss a')); // 02/19/2026 02:27:07 am

Moment အကြောင်း မှတ်သားထားရမည့် အဓိကအချက်မှာ Moment အရာဝတ္ထုတစ်ခုတွင် အချိန်နှင့် ရက်စွဲဆိုင်ရာ အချက်အလက် အမြဲပါဝင်နေခြင်းဖြစ်သည်။ အချိန်အချက်အလက်ဖြင့်သာ လုပ်ဆောင်ရန် လိုအပ်ပါက၊ ၎င်းသည် ပုံမှန်အားဖြင့် ကောင်းမွန်သော်လည်း၊ ရက်စွဲသည် အချိန်တွက်ချက်မှုအပေါ် သက်ရောက်မှုရှိနိုင်သည့် နေ့အလင်းရောင်ကို ချွေတာချိန် သို့မဟုတ် ရက်ထပ်နှစ်များကဲ့သို့ အခြေအနေမျိုးတွင် မမျှော်လင့်ထားသော အပြုအမူကို ဖြစ်စေနိုင်သည်။ Temporal သည် ပို၍ ပျော့ပြောင်းသည်။ Temporal.Instant အရာဝတ္ထုကို ဖန်တီးခြင်းဖြင့် လက်ရှိ ရက်စွဲနှင့် အချိန်ကို ကိုယ်စားပြုသည့် အရာတစ်ခုကို ဖန်တီးနိုင်သည်။ ၎င်းသည် “ခေတ်” ကတည်းက သတ်မှတ်ထားသည့် အချိန်အတွင်း အမှတ်အသားကို ကိုယ်စားပြုသည် (ဇန်နဝါရီလ ၁ ရက်၊ ၁၉၇၀ ခုနှစ် သန်းခေါင်ယံ UTC)။ Temporal သည် ဤလက်ငင်းကို နာနိုစက္ကန့်အဆင့် တိကျစွာ ကိုးကားနိုင်သည်။ const now = Temporal.Now.instant();

// ခေတ်ကတည်းက နာနိုစက္ကန့်အကြမ်းကို ကြည့်ပါ။ console.log(now.epochNanoseconds); // 1771466342612000000n

// UTC အတွက် ဖော်မတ် console.log(now.toString()); // 2026-02-19T01:55:27.844Z

အချိန်ဇုန်တစ်ခုအတွက် // ဖော်မတ် console.log(now.toString({ timeZone- 'America/New_York' })); // 2026-02-18T20:56:57.905-05:00

Temporal.Instant objects များကို static method မှ အသုံးပြု၍ သီးခြားအချိန်နှင့် ရက်စွဲများအတွက်လည်း ဖန်တီးနိုင်သည်။

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

// ဒေသစံတော်ချိန်ဇုန်တွင် instant ကို format လုပ်ပါ။ ၎င်းသည် ထိန်းချုပ်မှုသာဖြစ်ကြောင်း သတိပြုပါ။ // ဖော်မတ်ချခြင်း - ၎င်းသည် moment.utc ကဲ့သို့ အရာဝတ္တုကို မပြောင်းလဲပါ။ console.log(myInstant.toString({ timeZone- 'America/New_York' })); // 2026-02-18T21:10:00-05:00

သင်သည် အောက်ပါ အပါအဝင် အခြားသော Temporal object အမျိုးအစားများကိုလည်း ဖန်တီးနိုင်သည်။

Temporal.PlainDate- အချိန်အချက်အလက်မပါသော ရက်စွဲ။ Temporal.PlainTime- ရက်စွဲအချက်အလက်မရှိသော အချိန်။ Temporal.ZonedDateTime- သတ်မှတ်ထားသော အချိန်ဇုန်ရှိ ရက်စွဲနှင့် အချိန်။

၎င်းတို့တစ်ခုစီတွင် ရက်စွဲနှင့်/သို့မဟုတ် အချိန်သတ်မှတ်ပေးသည့် အရာဝတ္ထုတစ်ခုဖြင့် ခေါ်ဆိုနိုင်သည့် နည်းလမ်းတစ်ခုစီ သို့မဟုတ် ခွဲခြမ်းစိတ်ဖြာရန် ရက်စွဲစာကြောင်းတစ်ခုရှိသည်။ // ရက်စွဲတစ်ခုသာ const ယနေ့ = Temporal.PlainDate.from({ နှစ်: 2026၊ လ: 2၊ // ကျွန်ုပ်တို့သည် ဖေဖော်ဝါရီအတွက် 2 ကို အသုံးပြုနေကြောင်း သတိပြုပါ။ နေ့: 18 }); console.log(today.toString()); // ၂၀၂၆-၀၂-၁၈

// အချိန်တစ်ခုပဲ const lunchTime = Temporal.PlainTime.from({ နာရီ : 12 }); console.log(lunchTime.toString()); // 12:00:00

// အမေရိကန် အရှေ့တိုင်းစံတော်ချိန် နေ့ရက်နှင့် အချိန် const dueAt = Temporal.ZonedDateTime.from({ အချိန်ဇုန်- 'America/New_York'၊ နှစ်: 2026၊ လ : ၃၊ နေ့: 1၊ နာရီ : ၁၂၊ မိနစ် : 0၊ ဒုတိယ: 0 }); console.log(dueAt.toString()); // 2026-03-01T12:00:00-05:00[America/New_York]

ပိုင်းခြားခြင်း။ ကျွန်ုပ်တို့သည် ရက်စွဲနှင့် အချိန် အချက်အလက်များကို ပရိုဂရမ်ဖြင့် ဖန်တီးခြင်းအား အကျုံးဝင်ပါသည်။ ကဲ ခွဲခြမ်းစိတ်ဖြာကြည့်ရအောင်။ ခွဲခြမ်းစိတ်ဖြာခြင်းသည် တပ်ဆင်ထားသော Temporal API ထက် Moment ပိုပြောင်းလွယ်ပြင်လွယ်ရှိသော ဧရိယာတစ်ခုဖြစ်သည်။ ၎င်းကို အခိုက်အတန့် လုပ်ဆောင်ချက်သို့ ဖြတ်သန်းခြင်းဖြင့် ရက်စွဲစာတန်းတစ်ခုကို ပိုင်းခြားနိုင်သည်။ အငြင်းအခုံတစ်ခုတည်းဖြင့် Moment သည် ISO ရက်စွဲစာကြောင်းကို မျှော်လင့်ထားသော်လည်း အသုံးပြုနေသည့် ရက်စွဲဖော်မတ်ကို သတ်မှတ်ပေးသည့် ဒုတိယအငြင်းအခုံတစ်ခုကို ပံ့ပိုးပေးပါက သင်သည် အခြားပုံစံများကို အသုံးပြုနိုင်ပါသည်။

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); // အခိုက်အတန့်<2026-02-21T09:00:00-05:00>

console.log(formattedDate); // အခိုက်အတန့်<2026-02-21T09:00:00-05:00>

ဗားရှင်းအဟောင်းများတွင် Moment သည် မထင်သလို ဖော်မတ်ထားသည့် ရက်စွဲစာကြောင်းကို ခွဲခြမ်းစိတ်ဖြာရန် အကောင်းဆုံး ခန့်မှန်းနိုင်မည်ဖြစ်သည်။ ဒါက ခန့်မှန်းလို့မရတဲ့ ရလဒ်တွေကို ဖြစ်ပေါ်စေနိုင်ပါတယ်။ ဥပမာ၊ 02-03-2026 ဖေဖော်ဝါရီ 2 သို့မဟုတ် မတ်လ 3 ဖြစ်ပါသလား။ ဤအကြောင်းကြောင့်၊ Moment ၏ အသစ်ထွက်ဗားရှင်းများသည် ISO ဖော်မတ်လုပ်ရက်စွဲစာတန်းမပါဘဲ ခေါ်ပါက (အလိုရှိသော ဖော်မတ်နှင့် ဒုတိယအငြင်းအခုံကို မပေးပါက) ထင်ရှားသောကန့်ကွက်မှုသတိပေးချက်ကို ပြသသည်။ Temporal သည် အထူးဖော်မတ်ချထားသော ရက်စွဲစာကြောင်းကိုသာ ခွဲခြမ်းစိတ်ဖြာပါမည်။ စာကြောင်းသည် ISO 8601 ဖော်မတ် သို့မဟုတ် ၎င်း၏ တိုးချဲ့မှု RFC 9557 နှင့် လိုက်လျောညီထွေဖြစ်ရပါမည်။ အကယ်၍ မကိုက်ညီသည့် ရက်စွဲစာကြောင်းကို နည်းလမ်းတစ်ခုသို့ ဖြတ်သွားပါက၊ Temporal သည် RangeError တစ်ခုအား ပစ်လွှတ်မည်ဖြစ်သည်။

// RFC 9557 ရက်စွဲစာကြောင်းကို အသုံးပြုခြင်း။ 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

// အမည်မသိရက်စွဲစာကြောင်းကို အသုံးပြုခြင်း။ const otherDate = Temporal.Instant.from('2/21/26 9:00:00'); // RangeError: Temporal error: နှစ်တန်ဖိုးကို ခွဲခြမ်းစိတ်ဖြာနေစဉ် မမှန်ကန်သော ဇာတ်ကောင်။

ရက်စွဲစာကြောင်း၏ တိကျသောလိုအပ်ချက်များသည် သင်ဖန်တီးနေသည့် Temporal object အမျိုးအစားပေါ်တွင် မူတည်ပါသည်။ အထက်ဖော်ပြပါ ဥပမာတွင်၊ Temporal.Instant သည် အပြည့်အဝ ISO လိုအပ်သည်။8601 သို့မဟုတ် RFC 9557 ရက်စွဲနှင့်အချိန်ကို အချိန်ဇုန်အော့ဖ်ဆက်ဖြင့် သတ်မှတ်သည့် ရက်စွဲစာတန်း၊ သို့သော် သင်သည် ရက်စွဲဖော်မတ်၏ အစုခွဲတစ်ခုမျှကို အသုံးပြု၍ PlainDate သို့မဟုတ် PlainTime အရာဝတ္ထုများကို ဖန်တီးနိုင်သည်။ 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

ဤစာကြောင်းများသည် မျှော်လင့်ထားသည့် ဖော်မတ်နှင့် ကိုက်ညီနေသေးကြောင်း သတိပြုပါ သို့မဟုတ် အမှားအယွင်းတစ်ခု ချလိုက်ပါမည်။

// လိုက်လျောညီထွေမရှိသော အချိန်စာကြောင်းများကို အသုံးပြုခြင်း။ ဒါတွေအကုန်လုံးက RangeError ကို လွှင့်ပစ်ပါလိမ့်မယ်။ Temporal.PlainTime.from('9:00'); Temporal.PlainTime.from('9:00:00AM');

Pro အကြံပြုချက်- ISO မဟုတ်သော ကြိုးများကို ကိုင်တွယ်ခြင်းသည် Temporal သည် ယုံကြည်စိတ်ချရမှုကို ဦးစားပေးသောကြောင့်၊ 02-01-2026 ကဲ့သို့သော စာကြောင်းပုံစံကို ခန့်မှန်းရန် ကြိုးစားမည်မဟုတ်ပါ။ သင်၏ဒေတာအရင်းအမြစ်သည် ထိုကဲ့သို့သောစာကြောင်းများကိုအသုံးပြုပါက၊ Temporal နှင့်အသုံးမပြုမီ 2026-02-01 ကဲ့သို့တန်ဖိုးများကို ISO စာကြောင်းအဖြစ်ပြန်လည်စီစဉ်ရန် string manipulation အချို့ပြုလုပ်ရန်လိုအပ်ပါသည်။

ပုံစံချခြင်း။ သင့်တွင် Moment သို့မဟုတ် Temporal object တစ်ခုရှိသည်နှင့် တစ်ပြိုင်နက်၊ ၎င်းကို တစ်ချိန်ချိန်တွင် ဖော်မတ်ချထားသည့် စာကြောင်းအဖြစ်သို့ ပြောင်းလဲလိုပေမည်။ ဒါက Moment က နည်းနည်းပို terse တဲ့ ဥပမာတစ်ခုပါ။ အလိုရှိသော ရက်စွဲဖော်မတ်ကို ဖော်ပြသည့် တိုကင်ကြိုးတစ်ချောင်းဖြင့် သင်သည် အရာဝတ္ထု၏ ဖော်မတ်နည်းလမ်းကို ခေါ်ဆိုသည်။ const date = moment();

console.log(date.format('MM/DD/YYYY')); // ၀၂/၂၂/၂၀၂၆

console.log(date.format('MMMM Do YYYY၊ h:mm:ss a')); // ဖေဖော်ဝါရီ 22 ရက် 2026 ရက် 8:18:30 နာရီ

အခြားတစ်ဖက်တွင်၊ Temporal သည် သင့်အား အနည်းငယ်ပို၍ စကားများရန် လိုအပ်သည်။ Instant ကဲ့သို့သော ယာယီအရာဝတ္ထုများတွင် အရာဝတ္ထုတစ်ခု၏ ဂုဏ်သတ္တိများအဖြစ် သတ်မှတ်ထားသော ဖော်မတ်ချခြင်းဆိုင်ရာ ရွေးချယ်စရာအမျိုးမျိုးကို လက်ခံသည့် toLocaleString နည်းလမ်းတစ်ခုရှိသည်။

const date = Temporal.Now.instant();

// အငြင်းအခုံမရှိဘဲ၊ လက်ရှိဒေသခံအတွက် ပုံသေဖော်မတ်ကို ကျွန်ုပ်တို့ ရရှိပါမည်။ console.log(date.toLocaleString()); // 2/22/2026, 8:23:36 PM (en-US ၏ ဒေသတစ်ခုဟု ယူဆသည်)

// စိတ်ကြိုက်ဖော်မတ်စာတန်းတစ်ခုကို ထုတ်လုပ်ရန် ဖော်မတ်ချခြင်းရွေးချယ်စရာများကို ကျော်ဖြတ်ပါ။ console.log(date.toLocaleString('en-US'၊ { လ: 'ရှည်'၊ နေ့- 'ဂဏန်း'၊ နှစ်- 'ဂဏန်း'၊ နာရီ- 'ဂဏန်း ၂ လုံး'၊ မိနစ်- 'ဂဏန်း ၂ လုံး' })); // ဖေဖော်ဝါရီ 22 ရက် 2026 8:23 PM

// ဖော်မတ်စာတန်းတွင် သင်အလိုရှိသော အကွက်များကိုသာ ဖြတ်ပါ။ console.log(date.toLocaleString('en-US'၊ { လ: 'တိုတောင်း'၊ နေ့- 'ဂဏန်း' })); // ဖေဖော်ဝါရီ ၂၂

ယာယီရက်စွဲဖော်မတ်ချခြင်းသည် အမှန်တကယ်အားဖြင့် Intl.DateTimeFormat API (ခေတ်မီဘရောက်ဆာများတွင် အလွယ်တကူရရှိနိုင်သည်) ကို အသုံးပြုသည်။ ဆိုလိုသည်မှာ သင်သည် သင်၏စိတ်ကြိုက် ဖော်မတ်ချခြင်းရွေးချယ်မှုများဖြင့် ပြန်လည်အသုံးပြုနိုင်သော DateTimeFormat အရာဝတ္ထုတစ်ခုကို ဖန်တီးနိုင်ပြီး၊ ထို့နောက် Temporal အရာဝတ္ထုများကို ၎င်း၏ဖော်မတ်နည်းလမ်းသို့ လွှဲပြောင်းပေးနိုင်သည်။ ထို့အတွက်ကြောင့်၊ ၎င်းသည် Moment ကဲ့သို့ စိတ်ကြိုက်ရက်စွဲဖော်မတ်များကို မပံ့ပိုးနိုင်ပါ။ 'Q1 2026' သို့မဟုတ် အခြားသော အထူးပြုဖော်မတ်ချခြင်းကဲ့သို့သော တစ်ခုခုကို လိုအပ်ပါက၊ စိတ်ကြိုက်ရက်စွဲဖော်မတ်ကုဒ်အချို့ လိုအပ်နိုင်သည် သို့မဟုတ် ပြင်ပကုမ္ပဏီစာကြည့်တိုက်အတွက် လက်လှမ်းမီရန် လိုအပ်ပါသည်။ const formatter = အသစ် Intl.DateTimeFormat('en-US'၊ { လ- 'ဂဏန်း ၂ လုံး'၊ နေ့- 'ဂဏန်း ၂ လုံး'၊ နှစ်- 'ဂဏန်း' });

const date = Temporal.Now.instant(); console.log(formatter.format(ရက်စွဲ)); // ၀၂/၂၂/၂၀၂၆

Moment ၏ ဖော်မတ်ချခြင်း တိုကင်များသည် ရေးရန် ပိုမိုလွယ်ကူသော်လည်း ၎င်းတို့သည် ဒေသနှင့် မလိုက်ဖက်ပါ။ ဖော်မတ်စာတန်းများသည် လ/ရက် မှာယူမှုကဲ့သို့ အရာများကို “hard code” ဖြင့် ရေးပေးသည်။ Temporal ကဲ့သို့ configuration object တစ်ခုကို အသုံးပြုခြင်း၏ အားသာချက်မှာ ၎င်းသည် သတ်မှတ်ထားသော မည်သည့်နေရာနှင့်မဆို အလိုအလျောက် လိုက်လျောညီထွေဖြစ်ပြီး မှန်ကန်သောဖော်မတ်ကို အသုံးပြုခြင်းပင်ဖြစ်သည်။ const date = Temporal.Now.instant();

const formatOptions = { လ- 'ဂဏန်း'၊ နေ့- 'ဂဏန်း'၊ နှစ်- 'ဂဏန်း' };

console.log(date.toLocaleString('en-US'၊ formatOptions)); // ၂/၂၂/၂၀၂၆

console.log(date.toLocaleString('en-GB'၊ formatOptions)); // ၂၂/၀၂/၂၀၂၆

ရက်စွဲတွက်ချက်မှု အပလီကေးရှင်းများစွာတွင်၊ သင်သည် ရက်စွဲတစ်ခုတွင် တွက်ချက်မှုအချို့ကို လုပ်ဆောင်ရန် လိုအပ်သည်။ အချိန်ယူနစ်များ (ရက်၊ နာရီ၊ စက္ကန့် စသည်ဖြင့်) ထည့်ရန် သို့မဟုတ် နုတ်လိုနိုင်သည်။ ဥပမာအားဖြင့်၊ သင့်တွင် လက်ရှိရက်စွဲရှိပါက၊ ယခုမှစ၍ 1 ပတ်အတွင်း ရက်စွဲကို အသုံးပြုသူကို ပြသလိုပေမည်။ အခိုက်အတန့်အရာဝတ္ထုများတွင် ဤလုပ်ဆောင်မှုများကို လုပ်ဆောင်သည့် ပေါင်းထည့်ခြင်းနှင့် နုတ်ခြင်းကဲ့သို့သော နည်းလမ်းများရှိသည်။ ဤလုပ်ဆောင်ချက်များသည် တန်ဖိုးတစ်ခုနှင့် ယူနစ်တစ်ခုယူသည်၊ ဥပမာ- add(7၊ 'days')။ Moment နှင့် Temporal အကြား အလွန်အရေးကြီးသော ခြားနားချက်တစ်ခုမှာ၊ ဤရက်စွဲတွက်ချက်မှုများကို လုပ်ဆောင်သောအခါ၊ အရင်းခံအရာဝတ္ထုကို ပြုပြင်ပြီး ၎င်း၏မူလတန်ဖိုး ဆုံးရှုံးသွားခြင်းပင်ဖြစ်သည်။ const now = moment();

console.log(ယခု); // အခိုက်အတန့်<2026-02-24T20:08:36-05:00>

const nextWeek = now.add(7၊ 'ရက်'); console.log(nextWeek); // အခိုက်အတန့်<2026-03-03T20:08:36-05:00>

// Gotcha - မူလအရာဝတ္ထုသည် ပြောင်းလဲသွားသည်။ console.log(ယခု); // အခိုက်အတန့်<2026-03-03T20:08:36-05:00>

မူရင်းရက်စွဲကို မဆုံးရှုံးစေရန်၊ ကော်ပီဖန်တီးရန် Moment object ပေါ်ရှိ clone ကိုခေါ်ဆိုနိုင်ပါသည်။ const ယခု= အခိုက်အတန့်(); const nextWeek = now.clone().add(7၊ 'days');

console.log(ယခု); // အခိုက်အတန့်<2026-02-24T20:12:55-05:00>

console.log(nextWeek); // အခိုက်အတန့်<2026-03-03T20:12:55-05:00>

အခြားတစ်ဖက်တွင်၊ Temporal objects များသည် မပြောင်းလဲနိုင်ပေ။ Instant၊ PlainDate စသည်တို့ကဲ့သို့ အရာဝတ္ထုတစ်ခုကို သင်ဖန်တီးပြီးသည်နှင့်၊ ထိုအရာဝတ္ထု၏တန်ဖိုးသည် မည်သည့်အခါမျှ ပြောင်းလဲမည်မဟုတ်ပါ။ ယာယီအရာဝတ္ထုများတွင် ပေါင်းထည့်ခြင်းနှင့် နုတ်ခြင်းနည်းလမ်းများလည်း ရှိသည်။ Temporal သည် မည်သည့်အရာဝတ္ထုအမျိုးအစားများတွင် အချိန်ယူနစ်များထည့်နိုင်သည်ကို အနည်းငယ် ဇီဇာကြောင်သည်။ ဥပမာအားဖြင့်၊ သင်သည် Instant တွင် ရက်များကို ထည့်၍မရပါ။

const now = Temporal.Now.instant(); const nextWeek = now.add({ days: 7 }); // RangeError: ယာယီအမှား- အကြီးဆုံးယူနစ်သည် ရက်စွဲယူနစ်မဖြစ်နိုင်ပါ။

အဘယ်ကြောင့်ဆိုသော် Instant object များသည် UTC တွင် သတ်မှတ်ထားသော အမှတ်ကို ကိုယ်စားပြုပြီး ပြက္ခဒိန်ကို မယုံနိုင်သောကြောင့် ဖြစ်သည်။ နေ့အလင်းရောင်ချွေတာချိန်ကဲ့သို့သော အချိန်ဇုန်စည်းမျဉ်းများပေါ်မူတည်၍ တစ်ရက်၏ကြာချိန်သည် ပြောင်းလဲနိုင်သောကြောင့်၊ ဤတွက်ချက်မှုကို ချက်ခြင်းတွင် မရရှိနိုင်ပါ။ သို့သော် သင်သည် PlainDateTime ကဲ့သို့သော အခြားအရာဝတ္ထုအမျိုးအစားများတွင် ဤလုပ်ဆောင်ချက်ကို လုပ်ဆောင်နိုင်သည်- const now = Temporal.Now.plainDateTimeISO(); console.log(now.toLocaleString()); // 2/24/2026, 8:23:59 PM

const nextWeek = now.add({ days: 7 });

// မူရင်း PlainDateTime မပြောင်းလဲကြောင်း သတိပြုပါ။ console.log(now.toLocaleString()); // 2/24/2026, 8:23:59 PM

console.log(nextWeek.toLocaleString()); // 3/3/2026, 8:23:59 PM

Moment သို့မဟုတ် Temporal object နှစ်ခုကြားတွင် အချိန်မည်မျှရှိသည်ကိုလည်း တွက်ချက်နိုင်သည်။ Moment's diff လုပ်ဆောင်ချက်ဖြင့်၊ သင်သည် အသေးစိတ်အတွက် ယူနစ်တစ်ခု ပေးရန်လိုအပ်သည်၊ သို့မဟုတ်ပါက ၎င်းသည် မီလီစက္ကန့်အတွင်း ခြားနားချက်ကို ပြန်ပေးလိမ့်မည်။ const date1 = moment('2026-02-21T09:00:00'); const date2 = moment('2026-02-22T10:30:00');

console.log(date2.diff(date1)); // ၉၁၈၀၀၀၀၀၀

console.log(date2.diff(date1၊ 'days')); // ၁

Temporal object တစ်ခုဖြင့် ၎င်းကိုလုပ်ဆောင်ရန်၊ သင်သည် အခြား Temporal object ကို ၎င်း၏ method များအထိ သို့မဟုတ် နောက်ပိုင်းတွင် ပေးပို့နိုင်ပါသည်။ ၎င်းသည် အချိန်ကွာခြားချက်နှင့်ပတ်သက်သည့် အချက်အလက်ပါရှိသော Temporal.Duration အရာဝတ္ထုကို ပြန်ပေးသည်။ ကြာချိန်အရာဝတ္တုတွင် ကွာခြားချက်၏အစိတ်အပိုင်းတစ်ခုစီအတွက် ဂုဏ်သတ္တိများရှိပြီး အချိန်ကွာခြားမှုကိုကိုယ်စားပြုသော ISO 8601 ကြာချိန်စာကြောင်းကိုလည်း ထုတ်လုပ်နိုင်သည်။

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

// biggestUnit သည် ကိုယ်စားပြုရန် အချိန်၏ အကြီးဆုံးယူနစ်ကို သတ်မှတ်သည်။ // ကြာချိန် တွက်နည်း const diff = date2.since(date1၊ { biggestUnit: 'day' });

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

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

console.log(diff.minutes); // ၃၀

console.log(diff.toString()); // P1DT1H30M // (ISO 8601 ကြာချိန်- ၁ ရက်၊ ၁ နာရီ၊ မိနစ် ၃၀)

နေ့စွဲများနှင့် အချိန်များကို နှိုင်းယှဉ်ခြင်း။ Moment နှင့် Temporal နှစ်ခုစလုံးသည် သင့်အား ရက်စွဲများနှင့် အချိန်များကို နှိုင်းယှဉ်နိုင်စေသော်လည်း အခြားတစ်ခု၏ရှေ့မှောက်တွင် ရောက်ရှိလာမည့်အရာများကို ဆုံးဖြတ်ရန်၊ API နှင့် မတူညီသောချဉ်းကပ်မှုများကို ရယူပါ။ Moment အရာဝတ္ထုနှစ်ခုကို နှိုင်းယှဉ်ရန် isBefore၊ isAfter နှင့် isSame ကဲ့သို့သော နည်းလမ်းများကို ပံ့ပိုးပေးပါသည်။ const date1 = moment('2026-02-21T09:00:00'); const date2 = moment('2026-02-22T10:30:00');

console.log(date1.isBefore(date2)); //အမှန်

Temporal သည် အမျိုးအစားတူ အရာဝတ္ထုနှစ်ခုကြား နှိုင်းယှဉ်မှုကို လုပ်ဆောင်ရန် static နှိုင်းယှဉ်နည်းလမ်းကို အသုံးပြုသည်။ ပထမရက်စွဲသည် ဒုတိယနေ့မတိုင်မီရောက်လာပါက၊ 0 နှင့်တူညီပါက၊ သို့မဟုတ် ပထမရက်စွဲသည် ဒုတိယနောက်မှလာပါက 1 သို့ပြန်လည်ရောက်ရှိမည်ဖြစ်သည်။ အောက်ဖော်ပြပါ ဥပမာသည် PlainDate အရာဝတ္ထုနှစ်ခုကို နှိုင်းယှဉ်ပုံကို ပြသထားသည်။ Temporal.PlainDate.compare အတွက် အကြောင်းပြချက်နှစ်ခုစလုံးသည် PlainDate အရာဝတ္ထုများ ဖြစ်ရပါမည်။

const date1 = Temporal.PlainDate.from({ နှစ်- 2026၊ လ- 2၊ နေ့- 24 }); const date2 = Temporal.PlainDate.from({ နှစ်- 2026၊ လ- 3၊ နေ့- 24 });

// date1 သည် date2 မတိုင်မီ ဖြစ်သောကြောင့် -1 console.log(Temporal.PlainDate.compare(date1၊ date2));

// မတူညီသော အရာဝတ္ထုနှစ်ခုကို နှိုင်းယှဉ်ကြည့်လျှင် အမှားအယွင်းရှိသည်။ console.log(Temporal.PlainDate.compare(date1၊ Temporal.Now.instant())); // TypeError: Temporal error: Invalid PlainDate အကွက်များကို ပေးထားသည်။

အထူးသဖြင့်၊ ၎င်းသည် Temporal object များကို အချိန်နှင့် တပြေးညီ စီရန်လွယ်ကူစေသည်။ // Temporal.PlainDate အရာဝတ္ထုများ၏ array တစ်ခု const dates = [ ... ];

// နှိုင်းယှဉ်မှုလုပ်ဆောင်ချက်အဖြစ် Temporal.PlainDate.compare ကိုသုံးပါ။ dates.sort(Temporal.PlainDate.compare);

Time Zone ပြောင်းလဲမှုများ အဓိက Moment ဒစ်ဂျစ်တိုက်သည် အချိန်ဇုန်ပြောင်းလဲခြင်းကို မပံ့ပိုးပါ။ ဤလုပ်ဆောင်ချက်ကို လိုအပ်ပါက၊ moment-timezone package ကိုလည်း ထည့်သွင်းရန် လိုအပ်ပါသည်။ ဤပက်ကေ့ဂျ်သည် သစ်ပင်လှုပ်၍မရသောကြောင့် သင်၏အစုအဝေးအရွယ်အစားသို့ သိသိသာသာထည့်နိုင်သည်။ moment-timezone ကို ထည့်သွင်းပြီးသည်နှင့်၊ သင်သည် tz နည်းလမ်းဖြင့် Moment objects များကို မတူညီသော အချိန်ဇုန်များသို့ ပြောင်းနိုင်သည်။ အခြားသော Moment လုပ်ဆောင်ချက်များကဲ့သို့၊ ၎င်းသည် အရင်းခံကို ပြောင်းလဲစေသည်။အရာဝတ္ထု။ // US အရှေ့ပိုင်းအချိန်ဟု ယူဆပါသည်။ const now = moment(); console.log(ယခု); // အခိုက်အတန့်<2026-02-28T20:08:20-05:00>

// ပစိဖိတ်အချိန်သို့ ပြောင်းပါ။ //မူလအရှေ့တိုင်းအချိန်သည် ပျောက်ဆုံးသွားခဲ့သည်။ now.tz('America/Los_Angeles'); console.log(ယခု); // အခိုက်အတန့်<2026-02-28T17:08:20-08:00>

Temporal.ZonedDateTime အရာဝတ္တုကို အသုံးပြုသောအခါတွင် Time zone လုပ်ဆောင်နိုင်စွမ်းကို Temporal API တွင် တည်ဆောက်ထားသည်။ ဤအရာဝတ္တုများတွင် အချိန်ကာလနှင့် တူညီသောအခိုက်အတန့်ကို ကိုယ်စားပြုသည့် ZonedDateTime အသစ်ကို ပြန်ပေးသည့် withTimeZone နည်းလမ်းတစ်ခု ပါဝင်ပါသည်။ // တဖန် US Eastern time လို့ ယူဆတယ်။ const now = Temporal.Now.zonedDateTimeISO(); console.log(now.toLocaleString()); // 2/28/2026, 8:12:02 PM EST

// ပစိဖိတ်အချိန်သို့ ပြောင်းပါ။ const nowPacific = now.withTimeZone('America/Los_Angeles'); console.log(nowPacific.toLocaleString()); // 2/28/2026, 5:12:02 PM PST

// မူရင်းအရာဝတ္ထုသည် မပြောင်းလဲပါ။ console.log(now.toLocaleString()); // 2/28/2026, 8:12:02 PM EST

မှတ်ချက်-LocaleString မှပြန်ပေးသော ဖော်မတ်လုပ်ထားသောတန်ဖိုးများသည်၊ အမည်ဖော်ပြသကဲ့သို့၊ နေရာဒေသ-မူတည်ပါသည်။ နမူနာကုဒ်ကို en-US locale တွင် ဖန်တီးထားသောကြောင့် ဖော်မတ်သည် ဤကဲ့သို့ဖြစ်သည်- 2/28/2026, 5:12:02 PM PST။ အခြားဒေသတွင်၊ ၎င်းသည် ကွဲပြားနိုင်သည်။ ဥပမာအားဖြင့်၊ en-GB ဒေသန္တရတွင်၊ သင်သည် 28/2/2026၊ 17:12:02 GMT-8 ကဲ့သို့သော တစ်ခုခုကို ရရှိမည်ဖြစ်သည်။ လက်တွေ့ကမ္ဘာကို ပြန်လည်ပြုပြင်ခြင်း ကျွန်ုပ်တို့သည် အချိန်ဇုန်တစ်လျှောက် ဖြစ်ရပ်များကို အချိန်ဇယားဆွဲရန် အက်ပ်တစ်ခုကို တည်ဆောက်နေသည်ဆိုပါစို့။ ဤအက်ပ်၏တစ်စိတ်တစ်ပိုင်းသည် ပွဲ၏အချိန်နှင့်ရက်စွဲ၊ ဒေသစံတော်ချိန်ဇုန်နှင့် ပစ်မှတ်အချိန်ဇုန်ကို ကိုယ်စားပြုသည့် ISO 8601 စာကြောင်းကို ယူဆောင်သည့် လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ လုပ်ဆောင်ချက်သည် အချိန်ဇုန်နှစ်ခုလုံးတွင် အဖြစ်အပျက်အတွက် ဖော်မတ်လုပ်ထားသော အချိန်နှင့် ရက်စွဲများကို ဖန်တီးပေးသည်။ လုပ်ဆောင်ချက်သည် တရားဝင်အချိန်/ရက်စွဲစာကြောင်းမဟုတ်သော ထည့်သွင်းမှုစာကြောင်းကို ပေးဆောင်ပါက၊ ၎င်းသည် အမှားအယွင်းတစ်ခု ဖြစ်သွားလိမ့်မည်။ ဤသည်မှာ Moment ကိုအသုံးပြုခြင်း (moment-timezone ပက်ကေ့ချ်ကို အသုံးပြုရန် လိုအပ်သည်) ကို အသုံးပြု၍ မူလအကောင်အထည်ဖော်မှုဖြစ်သည်။

'moment-timezone' မှ အခိုက်အတန့်ကို တင်သွင်းပါ။

function getEventTimes(inputString၊ userTimeZone၊ targetTimeZone) { const timeFormat = 'MMM D၊ YYYY၊ h:mm:ss a z';

// 1. အသုံးပြုသူ၏ အချိန်ဇုန်တွင် ကနဦးအချိန်ကို ဖန်တီးပါ။ const eventTime = moment.tz( inputString၊ moment.ISO_8601၊ // ISO 8601 စာကြောင်းကို မျှော်လင့်ပါ။ မှန်သည်၊ // ခွဲခြမ်းစိတ်ဖြာခြင်း အသုံးပြုသူအချိန်ဇုန် );

// inputString သည် တရားဝင်သောရက်စွဲကို ကိုယ်စားမပြုပါက အမှားတစ်ခုကို လွှင့်ပစ်ပါ။ အကယ်၍ (!eventTime.isValid()) { အမှားအသစ်ကို ပစ်ပါ('မမှန်ကန်သော ရက်စွဲ/အချိန် ထည့်သွင်းမှု'); }

// ၂။ ပစ်မှတ်အချိန်ကို တွက်ချက်ပါ။ // အရေးကြီးသည်- ကျွန်ုပ်တို့သည် ပုံတူပွားရမည်၊ သို့မဟုတ် 'eventTime' သည် ထာဝရပြောင်းလဲသွားမည်ဖြစ်သည်။ const targetTime = eventTime.clone().tz(targetTimeZone);

ပြန်လာ { ဒေသတွင်း- eventTime.format(timeFormat), ပစ်မှတ်- targetTime.format(အချိန်ဖော်မတ်)၊ }; }

const အချိန်ဇယား = getEventTimes( '2026-03-05T15:00-05:00'၊ 'အမေရိက/နယူးယော့ခ်'၊ 'ဥရောပ/လန်ဒန်'၊ );

console.log(schedule.local); // မတ်လ 5၊ 2026၊ 3:00:00 ညနေ EST

console.log(schedule.target); // မတ်လ 5၊ 2026၊ 8:00:00 နာရီ ဂရင်းနစ်စံတော်ချိန်

ဤဥပမာတွင်၊ ကျွန်ုပ်တို့သည် Moment တွင် အထောက်အကူဖြစ်စေမည့် ISO 8601 ၏ မျှော်လင့်ထားသည့်ရက်စွဲပုံစံကို အသုံးပြုနေပါသည်။ ကျွန်ုပ်တို့သည်လည်း တင်းကျပ်သော ခွဲခြမ်းစိတ်ဖြာမှုကိုလည်း အသုံးပြုနေပါသည်၊ ဆိုလိုသည်မှာ Moment သည် ဖော်မက်နှင့်မကိုက်ညီသော ရက်စွဲစာကြောင်းဖြင့် ခန့်မှန်းရန်ကြိုးစားမည်မဟုတ်ပါ။ ISO မဟုတ်သော ရက်စွဲစာကြောင်းကို ကျော်သွားပါက၊ ၎င်းသည် မမှန်ကန်သော ရက်စွဲအရာတစ်ခုကို ဖြစ်ပေါ်စေမည်ဖြစ်ပြီး ကျွန်ုပ်တို့သည် အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်စေမည်ဖြစ်သည်။ Temporal အကောင်အထည်ဖော်ပုံသည် ဆင်တူသော်လည်း အဓိက ကွာခြားချက် အနည်းငယ်ရှိသည်။

function getEventTimes(inputString၊ userTimeZone၊ targetTimeZone) { // 1. Instant တစ်ခုသို့ တိုက်ရိုက်ထည့်သွင်းမှုကို ပိုင်းခြားပြီး ဖန်တီးပါ။ // အသုံးပြုသူ၏ဇုန်ရှိ ZonedDateTime။ const instant = Temporal.Instant.from(inputString); const eventTime = instant.toZonedDateTimeISO(userTimeZone);

// ၂။ ပစ်မှတ်ဇုန်သို့ ပြောင်းပါ။ // ၎င်းသည် အရာဝတ္ထုအသစ်ကို အလိုအလျောက် ပြန်ပေးသည်။ 'eventTime' သည် လုံခြုံသည်။ const targetTime = eventTime.withTimeZone(targetTimeZone);

// 3. Intl (built-in) ကို အသုံးပြု၍ ဖော်မတ်၊ const ရွေးချယ်စရာများ = { နှစ်- 'ဂဏန်း'၊ လ: 'တိုတောင်း'၊ နေ့- 'ဂဏန်း'၊ နာရီ- 'ဂဏန်း'၊ မိနစ်- 'ဂဏန်း ၂ လုံး'၊ ဒုတိယ- 'ဂဏန်း ၂ လုံး'၊ အချိန်ဇုန်အမည်- 'တိုတောင်းသော' };

ပြန်လာ { ဒေသတွင်း- eventTime.toLocaleString(navigator.language၊ ရွေးချယ်စရာများ)၊ ပစ်မှတ်- targetTime.toLocaleString(navigator.language၊ ရွေးချယ်စရာများ) }; }

const အချိန်ဇယား = getEventTimes( '2026-03-05T15:00-05:00'၊ 'အမေရိက/နယူးယော့ခ်'၊ 'ဥရောပ/လန်ဒန်'၊ );

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

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

Moment ဖြင့်၊ ကျွန်ုပ်တို့သည် ရရှိလာသော ရက်စွဲစာကြောင်းများအတွက် ဖော်မတ်စာတန်းတစ်ခုကို ပြတ်သားစွာ သတ်မှတ်ရပါမည်။ အသုံးပြုသူ၏တည်နေရာ သို့မဟုတ် နေရာဒေသ မည်သို့ပင်ရှိစေကာမူ၊ ပွဲအချိန်များကို မတ်လ 5၊ 2026၊ 3:00:00 တွင် အမြဲတမ်းဖော်မတ်လုပ်ပါမည်။ညနေ EST ထို့အပြင်၊ ကျွန်ုပ်တို့သည် ခြွင်းချက်တစ်ခုကို ရှင်းရှင်းလင်းလင်း ထုတ်ပြောရန် မလိုအပ်ပါ။ မမှန်ကန်သော စာကြောင်းတစ်ခုကို Temporal.Instant.from သို့ ဖြတ်သွားပါက၊ Temporal သည် ကျွန်ုပ်တို့အတွက် ခြွင်းချက်အဖြစ် သတ်မှတ်ပေးပါမည်။ သတိပြုရမည့်အချက်မှာ တင်းကျပ်သော ခွဲခြမ်းစိတ်ဖြာမှုဖြင့်ပင် Moment ဗားရှင်းသည် ပို၍ သက်တောင့်သက်သာရှိနေဆဲဖြစ်သည်။ Temporal သည် string ၏အဆုံးတွင် timezone offset လိုအပ်သည်။ ကျွန်ုပ်တို့သည် navigator.language ကိုအသုံးပြုနေသောကြောင့်၊ navigator ကို Node.js ပတ်ဝန်းကျင်တွင် မသတ်မှတ်ထားသောကြောင့်၊ ဤကုဒ်သည် ဘရောက်ဆာပတ်ဝန်းကျင်တွင်သာ အလုပ်လုပ်မည်ကို သတိပြုသင့်သည်။ ယာယီ အကောင်အထည်ဖော်မှုသည် ဘရောင်ဇာ၏ လက်ရှိဒေသ (navigator.language) ကို အသုံးပြုထားသောကြောင့် အသုံးပြုသူသည် ၎င်းတို့၏ ဒေသစံတော်ချိန်ဖော်မတ်ပုံစံဖြင့် ဖြစ်ရပ်အချိန်များကို အလိုအလျောက် ရရှိမည်ဖြစ်သည်။ အမေရိကန်ပြည်တွင်းတွင်၊ ၎င်းသည် မတ်လ 5 ရက်၊ 2026၊ 3:00:00 နာရီ EST ဖြစ်သည်။ သို့သော်၊ အသုံးပြုသူသည် လန်ဒန်တွင်ရှိနေပါက၊ ပွဲအချိန်များကို 5 မတ်လ 2026၊ 15:00:00 GMT-5 အဖြစ် ဖော်မတ်လုပ်ပါမည်။ အနှစ်ချုပ်

အက်ရှင် Moment.js ယာယီ လက်ရှိအချိန် အခိုက်အတန့်() Temporal.Now.zonedDateTimeISO() ISO ကို ပိုင်းခြားခြင်း အခိုက်အတန့်(str) ယာယီ။Instant.from(str) အချိန်ထည့်ပါ။ .add(7၊ 'ရက်') (mutates) .add({ရက်- 7 }) (အရာဝတ္ထုအသစ်) ကွာခြားမှု .diff(အခြား၊ 'နာရီ') .စတင်(အခြား)နာရီ အချိန်ဇုန် .tz('ဇုန်/အမည်') .withTimeZone('ဇုန်/အမည်')

ပထမတစ်ချက်တွင်၊ ခြားနားချက်သည် အနည်းငယ်ကွဲပြားနိုင်သည် (ထို့အပြင် Temporal တွင်၊ တစ်ခါတစ်ရံ ပို၍ စကားအပြောအဆိုနှင့် ပိုမိုတင်းကျပ်သည်) အထားအသိုဖြစ်နိုင်သော်လည်း Temporal over Moment.js ကိုအသုံးပြုခြင်းအတွက် အဓိကအားသာချက်များစွာရှိပါသည်။

ပိုမိုရှင်းလင်းပြတ်သားစွာဖော်ပြခြင်းသည် အံ့အားသင့်စရာများနှင့် မရည်ရွယ်ထားသော ချို့ယွင်းချက်နည်းပါးလာခြင်းကို ဆိုလိုသည်။ အခိုက်အတန့်သည် ပို၍ သက်တောင့်သက်သာရှိပုံပေါ်နိုင်သော်လည်း ၎င်းတွင် တစ်ခါတစ်ရံတွင် မှားယွင်းသောရက်စွဲများကို ဖြစ်ပေါ်စေနိုင်သည့် "မှန်းဆအလုပ်" ပါဝင်ပါသည်။ အကယ်၍ သင်သည် Temporal ကို မမှန်ကန်သော အရာတစ်ခု ပေးပါက၊ ၎င်းသည် အမှားတစ်ခု ဖြစ်စေသည်။ ကုဒ်အလုပ်လုပ်ပါက၊ သင့်တွင် တရားဝင်ရက်စွဲတစ်ခုရှိကြောင်း သင်သိပါသည်။ အခိုက်အတန့်သည် အထူးသဖြင့် အခိုက်အတန့်အချိန်ဇုန်ပက်ကေ့ဂျ်ကို အသုံးပြုနေပါက အပလီကေးရှင်းအစုအဝေးတွင် သိသာထင်ရှားသောအရွယ်အစားကို ပေါင်းထည့်နိုင်သည်။ Temporal သည် မည်သည့်အရာကိုမျှ ထပ်မထည့်ပါ (၎င်းကို သင်၏ပစ်မှတ်ဘရောက်ဆာများတွင် ပို့ဆောင်ပြီးသည်နှင့်)။ ရက်စွဲပြောင်းလဲခြင်းများနှင့် လုပ်ဆောင်ချက်များကို လုပ်ဆောင်သောအခါတွင် သင်သည် ဒေတာကို ဘယ်သောအခါမျှ ဆုံးရှုံးခြင်း သို့မဟုတ် ထပ်ရေးမည်မဟုတ်ကြောင်း မပြောင်းလဲနိုင်သော ယုံကြည်မှုကို ပေးပါသည်။ Moment သည် UTC အချိန်တံဆိပ်တုံးတစ်ဝိုက်တွင် အမြဲရှိနေသော သင့်လိုအပ်ချက်များပေါ်မူတည်၍ အချိန်၏ မတူညီသောကိုယ်စားပြုမှုများ (Instant၊ PlainDateTime၊ ZonedDateTime)။ Temporal သည် ရက်စွဲပုံစံချခြင်းအတွက် Intl APIs ကိုအသုံးပြုသည်၊ ဆိုလိုသည်မှာ သင်သည် တိုကင်များကို တိတိကျကျသတ်မှတ်ရန်မလိုဘဲ locale-aware formatting ကိုရနိုင်သည်။

Polyfill တွင် မှတ်စုများ အစောပိုင်းတွင်ဖော်ပြခဲ့သည့်အတိုင်း၊ @js-temporal/polyfill အမည်ရှိ npm ပက်ကေ့ချ်အဖြစ် ဖြန့်ဝေထားသော Temporal polyfill ရှိပါသည်။ ယနေ့ Temporal ကို အသုံးပြုလိုပါက API ကို မတင်ပို့ရသေးသော Safari ကဲ့သို့သော ဘရောက်ဆာများကို ပံ့ပိုးရန် ဤ polyfill လိုအပ်ပါသည်။ သတင်းဆိုးတစ်ခုကတော့ ၎င်းသည် သင်၏အစုအဝေးအရွယ်အစားသို့ ပေါင်းထည့်လိုက်ခြင်းပင်ဖြစ်သည်။ သတင်းကောင်းမှာ ၎င်းသည် အခိုက်အတန့် သို့မဟုတ် အခိုက်အတန့်အချိန်ဇုန်ထက် သိသိသာသာ နည်းနေသေးကြောင်း သိရသည်။ ဤသည်မှာ Bundlephobia.com မှတင်ပြထားသည့်အတိုင်း အစုအဝေးအရွယ်အစားများ၏ နှိုင်းယှဉ်ချက်ဖြစ်ပြီး npm ပက်ကေ့ဂျ်အရွယ်အစားများဆိုင်ရာ အချက်အလက်များကိုတင်ပြသည့် ဝဘ်ဆိုဒ် ( Bundlephobia ခွဲခြမ်းစိတ်ဖြာမှုကိုကြည့်ရန် ပက်ကေ့ဂျ်အမည်တစ်ခုစီကို နှိပ်ပါ)။

အထုပ် အသေးစိပ် အသေးစိပ်နှင့် gzipped @js-temporal/polyfill 154.1 kB 44.1 kB ခဏ 294.4 kB 75.4 kB အခိုက်အတန့်အချိန်ဇုန် 1 MB 114.2 kB

polyfill သည် မှတ်ဉာဏ်အသုံးပြုမှုနှင့်ပတ်သက်ပြီး စွမ်းဆောင်ရည်ဆိုင်ရာ ပြဿနာအချို့လည်းရှိခဲ့ဖူးပြီး စာရေးချိန်တွင်၊ ၎င်းသည် အယ်လ်ဖာအခြေအနေတစ်ခုဟု ယူဆပါသည်။ ထို့အတွက်ကြောင့်၊ ၎င်းကို ပိုမိုရင့်ကျက်သော အခြေအနေသို့ မရောက်ရှိမချင်း ၎င်းကို ထုတ်လုပ်ရေးတွင် သင်အသုံးမပြုလိုပေ။ အခြားသတင်းကောင်းမှာ polyfill သည် အချိန်ကြာကြာ မလိုအပ်တော့မည် (ဟုတ်ပါတယ် ဘရောက်ဆာအဟောင်းတွေကို ပံ့ပိုးဖို့ မလိုအပ်ဘူးဆိုရင်)။ စာရေးနေစဉ်တွင် Temporal သည် Chrome၊ Edge နှင့် Firefox တို့တွင် တင်ပို့ခဲ့သည်။ Safari တွင် အဆင်သင့်မဖြစ်သေးသော်လည်း နောက်ဆုံးထွက် Technology Preview တွင် runtime flag ဖြင့် ရနိုင်ပုံရသည်။

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