জাভাস্ক্রিপ্টত লিখা প্ৰায় যিকোনো ধৰণৰ এপ্লিকেচনে কিছু ক্ষমতাত সময় বা তাৰিখৰ সৈতে কাম কৰে। আৰম্ভণিতে এইটো বিল্ট-ইন তাৰিখ এপিআইত সীমাবদ্ধ আছিল। এই API ত মৌলিক কাৰ্য্যকৰীতা অন্তৰ্ভুক্ত কৰা হৈছে, কিন্তু ই কি কৰিব পাৰে তাত যথেষ্ট সীমিত। Moment.js ৰ দৰে তৃতীয়-পক্ষ লাইব্ৰেৰীসমূহ, আৰু পিছলৈ অন্তৰ্নিৰ্মিত APIসমূহ যেনে Intl APIs আৰু নতুন Temporal API, সময় আৰু তাৰিখৰ সৈতে কাম কৰাত বহুত বেছি নমনীয়তা যোগ কৰে। মুহূৰ্তৰ উত্থান আৰু পতন.js Moment.js হৈছে সময় আৰু তাৰিখৰ সৈতে কাম কৰাৰ বাবে শক্তিশালী সঁজুলিসমূহৰ সৈতে এটা জাভাস্ক্রিপ্ট লাইব্ৰেৰী। ই মূল তাৰিখ API ৰ পৰা অনুপস্থিত বৈশিষ্ট্যসমূহ অন্তৰ্ভুক্ত কৰে, যেনে সময় মণ্ডল মেনিপুলেচন, আৰু বহুতো সাধাৰণ কাৰ্য্যসমূহ সহজ কৰে। Moment ত তাৰিখ আৰু সময় ফৰ্মেট কৰাৰ বাবে ফাংচনসমূহো অন্তৰ্ভুক্ত কৰা হৈছে। ই বহুতো ভিন্ন প্ৰয়োগত বহুলভাৱে ব্যৱহৃত পুথিভঁৰাললৈ পৰিণত হৈছিল। অৱশ্যে মমেণ্টৰ বিষয়বোৰো আছিল নিজৰ অংশ। ই এটা বৃহৎ লাইব্ৰেৰী, আৰু এটা এপ্লিকেচনৰ বাণ্ডিল আকাৰত যথেষ্ট যোগ কৰিব পাৰে। যিহেতু লাইব্ৰেৰীয়ে গছ জোকাৰণি সমৰ্থন নকৰে (আধুনিক বাণ্ডলাৰৰ এটা বৈশিষ্ট্য যিয়ে লাইব্ৰেৰীৰ অব্যৱহৃত অংশ আঁতৰাব পাৰে), আপুনি ইয়াৰ এটা বা দুটা কাৰ্য্যহে ব্যৱহাৰ কৰিলেও সমগ্ৰ Moment লাইব্ৰেৰী অন্তৰ্ভুক্ত কৰা হৈছে। Moment ৰ আন এটা সমস্যা হ’ল ই সৃষ্টি কৰা বস্তুবোৰ পৰিৱৰ্তনশীল। Moment বস্তু এটাত কিছুমান ফাংচন কল কৰিলে পাৰ্শ্বক্ৰিয়া হয় আৰু সেই বস্তুটোৰ মান মিউটেট হয়। ইয়াৰ ফলত অপ্ৰত্যাশিত আচৰণ বা বাগ হ'ব পাৰে। ২০২০ চনত Moment ৰ ৰক্ষণাবেক্ষণকাৰীসকলে লাইব্ৰেৰীটোক মেইণ্টেনেন্স মোডত ৰখাৰ সিদ্ধান্ত লয়। কোনো নতুন বৈশিষ্ট্য বিকাশ কৰা হোৱা নাই, আৰু ৰক্ষণাবেক্ষণকাৰীসকলে ইয়াক নতুন প্ৰকল্পৰ বাবে ব্যৱহাৰ নকৰিবলৈ পৰামৰ্শ দিয়ে। আন জাভাস্ক্রিপ্ট তাৰিখ লাইব্ৰেৰী আছে, যেনে date-fns, কিন্তু চহৰত এটা নতুন প্লেয়াৰ আছে, এটা API জাভাস্ক্রিপ্টত পোনপটীয়াকৈ নিৰ্মিত: টেম্প’ৰেল৷ ই এটা নতুন প্ৰামাণিক যিয়ে মূল তাৰিখ API ৰ ফুটাসমূহ পূৰণ কৰাৰ লগতে Moment আৰু অন্যান্য লাইব্ৰেৰীসমূহত পোৱা কিছুমান সীমাবদ্ধতা সমাধান কৰে। টেম্পৰেল কি? টেম্প'ৰেল হৈছে এটা নতুন সময় আৰু তাৰিখ API ECMAScript প্ৰামাণিকত যোগ কৰা হৈছে, যি আধুনিক জাভাস্ক্রিপ্ট সংজ্ঞায়িত কৰে। ২০২৬৬ চনৰ মাৰ্চ মাহৰ পৰা ই টিচি৩৯ প্ৰক্ৰিয়াৰ ৪ নং পৰ্যায়ত উপনীত হৈছে (জাভাস্ক্রিপ্ট ভাষাৰ প্ৰস্তাৱ আৰু সংযোজনসমূহ তদাৰক কৰা সমিতি), আৰু ইচিএমএস্ক্রিপ্ট স্পেচিফিকেশনৰ পৰৱৰ্তী সংস্কৰণত অন্তৰ্ভুক্ত কৰা হ'ব। ইতিমধ্যে ইয়াক কেইবাটাও ব্ৰাউজাৰত প্ৰণয়ন কৰা হৈছে: ক্ৰ’ম ১৪৪+ আৰু ফায়াৰফক্স ১৩৯+, ইয়াৰ পিছত ছাফাৰীয়ে অতি সোনকালে অনুসৰণ কৰাৰ আশা কৰা হৈছে। সমৰ্থিত ব্ৰাউজাৰ আৰু Node.js ৰ বাবেও এটা পলিফিল উপলব্ধ। টেম্প'ৰেল এপিআইয়ে এনে বস্তু সৃষ্টি কৰে যিয়ে, সাধাৰণতে, সময়ৰ মুহূৰ্তসমূহক প্ৰতিনিধিত্ব কৰে। এইবোৰ এটা নিৰ্দিষ্ট সময় মণ্ডলত পূৰ্ণকালীন আৰু তাৰিখৰ ষ্টাম্প হ'ব পাৰে, বা কোনো সময় মণ্ডল বা তাৰিখৰ তথ্য অবিহনে “দেৱাল ঘড়ী” সময়ৰ এটা সাধাৰণ উদাহৰণ হ'ব পাৰে। টেম্পৰেলৰ কিছুমান মূল বৈশিষ্ট্য হ’ল-

তাৰিখৰ সৈতে বা তাৰিখ নোহোৱা সময়। এটা টেম্প'ৰেল বস্তুৱে এটা নিৰ্দিষ্ট তাৰিখত এটা নিৰ্দিষ্ট সময়ক প্ৰতিনিধিত্ব কৰিব পাৰে, বা কোনো তাৰিখৰ তথ্য নথকা এটা সময়ক প্ৰতিনিধিত্ব কৰিব পাৰে। এটা নিৰ্দিষ্ট তাৰিখ, সময় নোহোৱাকৈও প্ৰতিনিধিত্ব কৰিব পাৰি। সময় মণ্ডল সমৰ্থন। কালিক বস্তুসমূহ সম্পূৰ্ণৰূপে সময় মণ্ডল সচেতন আৰু বিভিন্ন সময় মণ্ডলৰ মাজেৰে ৰূপান্তৰ কৰিব পাৰি। Moment এ সময় মণ্ডলসমূহো সমৰ্থন কৰে, কিন্তু ইয়াৰ বাবে অতিৰিক্ত moment-timezone লাইব্ৰেৰীৰ প্ৰয়োজন। Immutability.এবাৰ এটা Temporal বস্তু সৃষ্টি হ'লে ইয়াক সলনি কৰিব নোৱাৰি। সময় গাণিতিক বা সময় মণ্ডল ৰূপান্তৰে অন্তৰ্নিহিত বস্তুটো পৰিবৰ্তন নকৰে। বৰঞ্চ তেওঁলোকে এটা নতুন Temporal বস্তু সৃষ্টি কৰে। 1-ভিত্তিক সূচীভুক্তকৰণ। তাৰিখ API (লগতে Moment ৰ সৈতে) বাগসমূহৰ এটা সাধাৰণ উৎস হ'ল যে মাহসমূহ শূন্য-সূচীভুক্ত। অৰ্থাৎ বাস্তৱ জীৱনত আমি সকলোৱে বুজি পোৱাৰ দৰে ১ মাহতকৈ জানুৱাৰী মাহ ০ মাহ। টেম্পৰেলে ইয়াক 1-ভিত্তিক সূচীকৰণ ব্যৱহাৰ কৰি সমাধান কৰে — জানুৱাৰী হৈছে মাহ 1 । ই ব্ৰাউজাৰত নিৰ্মিত। যিহেতু Temporal ব্ৰাউজাৰটোৰ এটা API, ই আপোনাৰ এপ্লিকেচনৰ বাণ্ডিল আকাৰত একো যোগ নকৰে৷

ইয়াৰ উপৰিও মন কৰিবলগীয়া যে তাৰিখ এপিআই নোহোৱা হৈ যোৱা নাই। Temporal এ এই API ৰ ঠাই লয়, ইয়াক আঁতৰোৱা বা অবচ্যুত কৰা হোৱা নাই। ব্ৰাউজাৰসমূহে হঠাতে তাৰিখ API আঁতৰাই দিলে বহুতো এপ্লিকেচন ভাঙি যাব। কিন্তু এইটোও মনত ৰাখিব যে মমেণ্টক এতিয়া মেইণ্টেনেন্স মোডত লিগেচি প্ৰজেক্ট বুলি গণ্য কৰা হৈছে। বাকী প্ৰবন্ধটোত, আমি Moment-ভিত্তিক ক’ডক নতুন Temporal API লৈ প্ৰব্ৰজন কৰাৰ বাবে কিছুমান “ৰেচিপি” চাম। ৰিফেক্টৰিং আৰম্ভ কৰোঁ আহক! তাৰিখ আৰু সময় বস্তু সৃষ্টি কৰা তাৰিখ আৰু সময়ক হেঁচা মাৰি ধৰাৰ আগতে আমি সেইবোৰক প্ৰতিনিধিত্ব কৰা বস্তু সৃষ্টি কৰিব লাগিব। বৰ্তমান তাৰিখ আৰু সময়ক প্ৰতিনিধিত্ব কৰা এটা Moment বস্তু সৃষ্টি কৰিবলৈ, moment ফাংচন ব্যৱহাৰ কৰক। const এতিয়া = মুহূৰ্ত(); console.log(এতিয়া); // মুহূৰ্ত<২০২৬-০২-১৮টি২১:২৬:২৯-০৫:০০>

এই বস্তুটো এতিয়া প্ৰয়োজন অনুসৰি ফৰ্মেট বা মেনিপুলেট কৰিব পাৰি।

// UTC লৈ ৰূপান্তৰ কৰক //সতৰ্কবাণী: ই Moment বস্তুক মিউটেট কৰে আৰু ইয়াক UTC ধৰণত ৰাখে! কনছ'ল.লগ(এতিয়া.utc()); // মুহূৰ্ত<২০২৬-০২-১৯T০২:২৬:২৯Z>

// এটা ফৰ্মেট কৰা ষ্ট্ৰিং প্ৰিন্ট কৰক - মন কৰক যে ই এতিয়া UTC সময় ব্যৱহাৰ কৰিছে console.log(এতিয়া.ফৰ্মেট('MM/DD/YYYY hh:mm:ss a')); // ০২/১৯/২০২৬ পুৱা ০২:২৭:০৭ বজাত

Moment ৰ বিষয়ে মনত ৰখা মূল কথাটো হ’ল যে Moment বস্তু এটাত সদায় সময় আৰু তাৰিখৰ বিষয়ে তথ্য অন্তৰ্ভুক্ত কৰা হয়। যদি আপুনি কেৱল সময়ৰ তথ্যৰ সৈতে কাম কৰিব লাগে, ই সাধাৰণতে ঠিকেই আছে, কিন্তু ই ডেইলাইট চেভিং টাইম বা লিপ ইয়াৰ দৰে পৰিস্থিতিত অপ্ৰত্যাশিত আচৰণৰ সৃষ্টি কৰিব পাৰে, য'ত তাৰিখে সময় গণনাত প্ৰভাৱ পেলাব পাৰে। টেম্প’ৰেল অধিক নমনীয়। আপুনি এটা Temporal.Instant বস্তু সৃষ্টি কৰি বৰ্তমান তাৰিখ আৰু সময়ক প্ৰতিনিধিত্ব কৰা এটা বস্তু সৃষ্টি কৰিব পাৰে। ই “যুগ” (১৯৭০ চনৰ ১ জানুৱাৰীত মাজনিশা ইউটিচি)ৰ পিছৰ সময়ৰ দ্বাৰা সংজ্ঞায়িত সময়ৰ এটা বিন্দুক প্ৰতিনিধিত্ব কৰে। টেম্পৰেলে এই মুহূৰ্তটোক সময়ত নেন'ছেকেণ্ড স্তৰৰ নিখুঁততাৰে উল্লেখ কৰিব পাৰে। const now = টেম্প'ৰেল.এতিয়া.তৎক্ষণাত();

// যুগৰ পৰা কেঁচা নেন'ছেকেণ্ড চাওক console.log(এতিয়া.epochNanoseconds); // ১৭৭১৪৬৬৩৪২৬১২০০০০০০০০০ন

// UTC ৰ বাবে বিন্যাস console.log(এতিয়া.toString()); // ২০২৬-০২-১৯টি০১:৫৫:২৭.৮৪৪জেড

// এটা নিৰ্দিষ্ট সময় মণ্ডলৰ বাবে বিন্যাস console.log(now.toString({ সময়মণ্ডল: 'আমেৰিকা/নিউয়ৰ্ক' })); // ২০২৬-০২-১৮টি২০:৫৬:৫৭.৯০৫-০৫:০০

Temporal.Instant বস্তুসমূহ from static পদ্ধতি ব্যৱহাৰ কৰি এটা নিৰ্দিষ্ট সময় আৰু তাৰিখৰ বাবেও সৃষ্টি কৰিব পাৰি।

const myInstant = টেম্প'ৰেল.Instant.from('২০২৬-০২-১৮টি২১:১০:০০-০৫:০০');

// স্থানীয় সময় মণ্ডলত তৎক্ষণাত ফৰ্মেট কৰক। মন কৰিব যে ই কেৱল নিয়ন্ত্ৰণ কৰে // ফৰ্মেটিং - ই moment.utc ৰ দৰে বস্তুটো মিউটেট নকৰে। console.log(myInstant.toString({ সময়মণ্ডল: 'আমেৰিকা/নিউয়ৰ্ক' })); // ২০২৬-০২-১৮টি২১:১০:০০-০৫:০০

আপুনি অন্য ধৰণৰ টেম্প'ৰেল বস্তুও সৃষ্টি কৰিব পাৰে, য'ত আছে:

Temporal.PlainDate: কোনো সময়ৰ তথ্য নথকা তাৰিখ। Temporal.PlainTime: কোনো তাৰিখৰ তথ্য নথকা এটা সময়। Temporal.ZonedDateTime: এটা নিৰ্দিষ্ট সময় মণ্ডলত এটা তাৰিখ আৰু সময়।

এইবোৰৰ প্ৰতিটোৰ এটা from পদ্ধতি আছে যি তাৰিখ আৰু/বা সময় ধাৰ্য্য কৰা এটা বস্তুৰ সৈতে কল কৰিব পাৰি, বা বিশ্লেষণ কৰিবলে এটা তাৰিখ ষ্ট্ৰিং। // মাত্ৰ এটা তাৰিখ const today = টেম্প'ৰেল.প্লেইনডেট.ফ্ৰম({ বছৰ: ২০২৬, month: 2, // মন কৰিব আমি ফেব্ৰুৱাৰীৰ বাবে 2 ব্যৱহাৰ কৰিছো দিন: ১৮ }); console.log(আজি.toString()); // ২০২৬-০২-১৮

// মাত্ৰ এটা সময় const lunchTime = টেম্প'ৰেল.প্লেইনটাইম.ৰ পৰা({ ঘন্টা: ১২ }); console.log(দুপৰীয়াৰ আহাৰ গ্ৰহণৰ সময়.toString()); // ১২:০০:০০ বজাত

// আমেৰিকাৰ পূব সময় মণ্ডলৰ এটা তাৰিখ আৰু সময় const dueAt = টেম্প'ৰেল.জোনেড তাৰিখ সময়.from({ timeZone: 'আমেৰিকা/নিউয়ৰ্ক', বছৰ: ২০২৬, মাহ: ৩, দিন: ১, ঘন্টা: ১২, মিনিট: ০, দ্বিতীয়: ০ }); কনছ'ল.লগ(dueAt.toString()); // ২০২৬-০৩-০১T১২:০০:০০-০৫:০০[আমেৰিকা/নিউয়ৰ্ক]

পাৰ্চিং আমি তাৰিখ আৰু সময়ৰ তথ্যৰ প্ৰগ্ৰেমেটিক সৃষ্টিৰ বিষয়ে আলোচনা কৰিছো৷ এতিয়া পাৰ্চিং চাওঁ আহক। পাৰ্চিং হৈছে এটা ক্ষেত্ৰ য'ত বিল্ট-ইন টেম্প'ৰেল এপিআইতকৈ ম'মেণ্ট অধিক নমনীয়। আপুনি এটা তাৰিখ ষ্ট্ৰিংক মুহূৰ্ত ফাংচনলৈ পাছ কৰি বিশ্লেষণ কৰিব পাৰে। এটা যুক্তিৰ সৈতে, Moment এ এটা ISO তাৰিখ স্ট্ৰিং আশা কৰে, কিন্তু আপুনি বিকল্প বিন্যাসসমূহ ব্যৱহাৰ কৰিব পাৰে যদি আপুনি ব্যৱহাৰ কৰা তাৰিখ বিন্যাস ধাৰ্য্য কৰা এটা দ্বিতীয় যুক্তি প্ৰদান কৰে।

const isoDate = মুহূৰ্ত('২০২৬-০২-২১T০৯:০০:০০'); const formattedDate = মুহূৰ্ত('২/২১/২৬ ৯:০০:০০', 'M/D/YY h:mm:ss');

কনছ'ল.লগ(isoDate); // মুহূৰ্ত<২০২৬-০২-২১T০৯:০০:০০-০৫:০০>

console.log(ফৰ্মেট কৰা তাৰিখ); // মুহূৰ্ত<২০২৬-০২-২১T০৯:০০:০০-০৫:০০>

পুৰণি সংস্কৰণসমূহত, Moment এ যিকোনো ইচ্ছাকৃতভাৱে ফৰ্মেট কৰা তাৰিখ ষ্ট্ৰিং বিশ্লেষণ কৰিবলে এটা উত্তম অনুমান কৰিব। ইয়াৰ ফলত অভাৱনীয় ফলাফল আহিব পাৰে। উদাহৰণস্বৰূপে, ০২-০৩-২০২৬ ২ ফেব্ৰুৱাৰী নে ৩ মাৰ্চ? এই কাৰণে, Moment ৰ নতুন সংস্কৰণসমূহে এটা বিশিষ্ট অৱহেলা সতৰ্কবাণী প্ৰদৰ্শন কৰে যদি ইয়াক এটা ISO ফৰ্মেট কৰা তাৰিখ ষ্ট্ৰিং অবিহনে কল কৰা হয় (যদিহে আকাংক্ষিত বিন্যাসৰ সৈতে দ্বিতীয় যুক্তিও দিয়া নহয়)। টেম্পৰেলে কেৱল এটা নিৰ্দিষ্টভাৱে ফৰ্মেট কৰা তাৰিখ ষ্ট্ৰিং বিশ্লেষণ কৰিব। যদি এটা অসঙ্গতিপূৰ্ণ তাৰিখ স্ট্ৰিং এটা from পদ্ধতিলৈ প্ৰেৰণ কৰা হয়, Temporal এ এটা RangeError নিক্ষেপ কৰিব।

// এটা RFC 9557 তাৰিখ ষ্ট্ৰিং ব্যৱহাৰ কৰা const myDate = Temporal.Instant.from('২০২৬-০২-২১T০৯:০০:০০-০৫:০০[আমেৰিকা/নিউয়ৰ্ক]'); console.log(myDate.toString({ সময়মণ্ডল: 'আমেৰিকা/নিউয়ৰ্ক' })); // ২০২৬-০২-২১T০৯:০০:০০-০৫:০০

// এটা অজ্ঞাত তাৰিখ ষ্ট্ৰিং ব্যৱহাৰ কৰা const otherDate = টেম্প'ৰেল.ইষ্টেণ্ট.ফ্ৰম('২/২১/২৬ ৯:০০:০০'); // RangeError: টেম্প'ৰেল ত্ৰুটি: বছৰৰ মান বিশ্লেষণ কৰাৰ সময়ত অবৈধ আখৰ।

তাৰিখ ষ্ট্ৰিঙৰ সঠিক প্ৰয়োজনীয়তাসমূহ আপুনি কোন ধৰণৰ টেম্প’ৰেল বস্তু সৃষ্টি কৰিছে তাৰ ওপৰত নিৰ্ভৰ কৰে। ওপৰৰ উদাহৰণত, Temporal.Instant ৰ বাবে এটা সম্পূৰ্ণ ISO ৰ প্ৰয়োজন8601 বা RFC 9557 তাৰিখ স্ট্ৰিং এটা সময় মণ্ডল অফছেটৰ সৈতে তাৰিখ আৰু সময় ধাৰ্য্য কৰা, কিন্তু আপুনি তাৰিখ বিন্যাসৰ এটা উপগোট ব্যৱহাৰ কৰি PlainDate বা PlainTime বস্তুও সৃষ্টি কৰিব পাৰে। const myDate = টেম্প'ৰেল.প্লেইনডেট.ফ্ৰম('২০২৬-০২-২১'); console.log(মোৰ তাৰিখ. toString()); // ২০২৬-০২-২১

const myTime = টেম্প'ৰেল.প্লেইনটাইম.from('09:00:00'); console.log(মোৰ সময়.toString()); // ০৯:০০:০০ বজাত

মন কৰিব যে এই স্ট্ৰিংসমূহ এতিয়াও প্ৰত্যাশিত বিন্যাসৰ সৈতে মিল থাকিব লাগিব, নহ'লে এটা ভুল নিক্ষেপ কৰা হ'ব ।

// এটা অসংগত সময় ষ্ট্ৰিং ব্যৱহাৰ কৰা। এই সকলোবোৰে এটা RangeError নিক্ষেপ কৰিব। টেম্প'ৰেল.প্লেইনটাইম.ফ্ৰম('৯:০০'); টেম্প'ৰেল.প্লেইনটাইম.ফ্ৰম('৯:০০:০০ বজাত');

প্ৰ' টিপ: নন-ISO ষ্ট্ৰিংসমূহ নিয়ন্ত্ৰণ কৰা যিহেতু টেম্পৰেলে নিৰ্ভৰযোগ্যতাক অগ্ৰাধিকাৰ দিয়ে, ই 02-01-2026 ৰ দৰে ষ্ট্ৰিংৰ বিন্যাস অনুমান কৰিবলৈ চেষ্টা নকৰে। যদি আপোনাৰ তথ্য উৎসই এনে স্ট্ৰিংসমূহ ব্যৱহাৰ কৰে, আপুনি Temporal ৰ সৈতে ব্যৱহাৰ কৰিবলৈ চেষ্টা কৰাৰ আগতে মানসমূহক এটা ISO স্ট্ৰিংলৈ পুনৰায় সাজিবলে কিছু স্ট্ৰিং মেনিপুলেচন কৰিব লাগিব।

ফৰ্মেটিং এবাৰ আপোনাৰ এটা Moment বা Temporal বস্তু থাকিলে, আপুনি হয়তো এটা সময়ত ইয়াক এটা ফৰ্মেট কৰা ষ্ট্ৰিংলৈ ৰূপান্তৰ কৰিব বিচাৰিব। এইটো এটা উদাহৰণ য'ত Moment অলপ বেছি সংক্ষিপ্ত। আপুনি বস্তুটোৰ বিন্যাস পদ্ধতিক টোকেনসমূহৰ এটা ষ্ট্ৰিঙৰ সৈতে কল কৰে যিয়ে আকাংক্ষিত তাৰিখ বিন্যাস বৰ্ণনা কৰে। const তাৰিখ = মুহূৰ্ত();

console.log(তাৰিখ.ফৰ্মেট('MM/DD/YYYY')); // ০২/২২/২০২৬

console.log(date.format('MMMM YYYY কৰক, h:mm:ss এটা')); // ২২ ফেব্ৰুৱাৰী ২০২৬, নিশা ৮:১৮:৩০ বজাত

আনহাতে, Temporal ৰ বাবে অলপ বেছি বাক্যবান হোৱাটো প্ৰয়োজন। টেম্প'ৰেল বস্তুসমূহৰ, যেনে Instant, এটা toLocaleString পদ্ধতি আছে যি এটা বস্তুৰ বৈশিষ্ট্য হিচাপে ধাৰ্য্য কৰা বিভিন্ন ফৰ্মেটিং বিকল্পসমূহ গ্ৰহণ কৰে।

const তাৰিখ = টেম্প'ৰেল.এতিয়া.তৎক্ষণাত();

// কোনো যুক্তি নোহোৱাকৈ, আমি বৰ্তমানৰ লোকেলৰ বাবে অবিকল্পিত বিন্যাস পাম console.log(তাৰিখ.স্থানস্ট্ৰিংলৈ()); // ২/২২/২০২৬, ৮:২৩:৩৬ বজাত (en-US ৰ এটা লোকেল ধৰি লৈ)

// এটা স্বনিৰ্বাচিত বিন্যাস ষ্ট্ৰিং সৃষ্টি কৰিবলৈ ফৰ্মেটিং বিকল্পসমূহ পাছ কৰক console.log(তাৰিখ.toLocaleString('en-US', { মাহ: 'দীঘল', দিন: 'সংখ্যাগত', বছৰ: 'সংখ্যাগত', ঘন্টা: '২-ডিজিট', মিনিট: '২-ডিজিট'। })); // ২২ ফেব্ৰুৱাৰী, ২০২৬ তাৰিখে নিশা ৮:২৩ বজাত

// কেৱল বিন্যাস ষ্ট্ৰিংত আপুনি বিচৰা ক্ষেত্ৰসমূহ পাছ কৰক console.log(তাৰিখ.toLocaleString('en-US', { মাহ: 'চুটি', দিন: 'সংখ্যাগত'। })); // ২২ ফেব্ৰুৱাৰী

টেম্পৰেল ডেট ফৰ্মেটিঙে প্ৰকৃততে হুডৰ তলত Intl.DateTimeFormat API (যি ইতিমধ্যে আধুনিক ব্ৰাউজাৰত সহজে উপলব্ধ) ব্যৱহাৰ কৰে। অৰ্থাৎ আপুনি আপোনাৰ স্বনিৰ্বাচিত বিন্যাস বিকল্পসমূহৰ সৈতে এটা পুনৰ ব্যৱহাৰযোগ্য DateTimeFormat বস্তু সৃষ্টি কৰিব পাৰে, তাৰ পিছত টেম্প'ৰেল বস্তুসমূহ ইয়াৰ বিন্যাস পদ্ধতিলৈ প্ৰেৰণ কৰিব পাৰে। ইয়াৰ বাবে, ই Moment ৰ দৰে কাষ্টম ডেট ফৰ্মেট সমৰ্থন নকৰে। যদি আপুনি 'Q1 2026' বা অন্য বিশেষ ফৰ্মেটিংৰ দৰে কিবা এটাৰ প্ৰয়োজন হয়, আপুনি কিছুমান স্বনিৰ্বাচিত তাৰিখ ফৰ্মেটিং ক'ডৰ প্ৰয়োজন হ'ব পাৰে বা তৃতীয়-পক্ষ লাইব্ৰেৰীৰ বাবে হাত আগবঢ়াব পাৰে। const ফৰ্মেটাৰ = নতুন Intl.DateTimeFormat('এন-আমেৰিকা', { মাহ: '২-ডিজিট', দিন: '২-অংক', বছৰ: 'সংখ্যাগত'। });

const তাৰিখ = টেম্প'ৰেল.এতিয়া.তৎক্ষণাত(); console.log(ফৰ্মেটাৰ.ফৰ্মেট(তাৰিখ)); // ০২/২২/২০২৬

Moment’s ফৰ্মেটিং টোকেন লিখিবলৈ সহজ, কিন্তু ই লোকেল-বন্ধুত্বপূৰ্ণ নহয়। ফৰ্মেটটোৱে মাহ/দিনৰ ক্ৰমৰ দৰে বস্তুবোৰ “হাৰ্ড ক’ড” ষ্ট্ৰিং কৰে। এটা বিন্যাস বস্তু ব্যৱহাৰ কৰাৰ সুবিধা, যেনেকৈ Temporal কৰে, ই স্বয়ংক্ৰিয়ভাৱে যিকোনো প্ৰদত্ত লোকেলৰ সৈতে খাপ খুৱাব আৰু সঠিক বিন্যাস ব্যৱহাৰ কৰিব। const তাৰিখ = টেম্প'ৰেল.এতিয়া.তৎক্ষণাত();

const formatবিকল্পসমূহ = { মাহ: 'সংখ্যাগত', দিন: 'সংখ্যাগত', বছৰ: 'সংখ্যাগত'। };

console.log(date.toLocaleString('en-US', বিন্যাস বিকল্পসমূহ)); // ২/২২/২০২৬ তাৰিখ

console.log(তাৰিখ.toLocaleString('en-GB', বিন্যাস বিকল্পসমূহ)); // ২২/০২/২০২৬

তাৰিখৰ গণনা বহুতো এপ্লিকেচনত, আপুনি এটা তাৰিখত কিছুমান গণনা শেষ কৰিব লাগিব। আপুনি সময়ৰ একক (দিন, ঘন্টা, চেকেণ্ড আদি) যোগ বা বিয়োগ কৰিব বিচাৰিব পাৰে। উদাহৰণস্বৰূপে, যদি আপোনাৰ বৰ্তমান তাৰিখ আছে, আপুনি ব্যৱহাৰকাৰীক এতিয়াৰ পৰা ১ সপ্তাহৰ পিছত তাৰিখ দেখুৱাব বিচাৰিব পাৰে। মুহূৰ্ত বস্তুবোৰৰ যোগ আৰু বিয়োগ আদি পদ্ধতি থাকে যিয়ে এই কাৰ্য্যসমূহ সম্পন্ন কৰে। এই ফাংচনসমূহে এটা মান আৰু এটা একক লয়, যেনে: add(7, 'days')। কিন্তু Moment আৰু Temporal ৰ মাজত এটা অতি গুৰুত্বপূৰ্ণ পাৰ্থক্য হ'ল এই তাৰিখ গণনাসমূহ সম্পন্ন কৰাৰ সময়ত অন্তৰ্নিহিত বস্তুটো পৰিৱৰ্তিত হয় আৰু ইয়াৰ মূল মান হেৰাই যায়। const এতিয়া = মুহূৰ্ত();

console.log(এতিয়া); // মুহূৰ্ত<২০২৬-০২-২৪টি২০:০৮:৩৬-০৫:০০>

const nextWeek = এতিয়া.যোগ কৰক(৭, 'দিন'); console.log(অহা সপ্তাহ); // মুহূৰ্ত<২০২৬-০৩-০৩টি২০:০৮:৩৬-০৫:০০>

// Gotcha - মূল বস্তুটো মিউটেট কৰা হৈছিল console.log(এতিয়া); // মুহূৰ্ত<২০২৬-০৩-০৩টি২০:০৮:৩৬-০৫:০০>

মূল তাৰিখ হেৰুৱাৰ পৰা হাত সাৰিবলৈ, আপুনি এটা কপি সৃষ্টি কৰিবলৈ Moment বস্তুত clone কল কৰিব পাৰে। const এতিয়া= মুহূৰ্ত(); const nextWeek = এতিয়া.ক্ল'ন (). যোগ কৰক (৭, 'দিন');

console.log(এতিয়া); // মুহূৰ্ত<২০২৬-০২-২৪টি২০:১২:৫৫-০৫:০০>

console.log(অহা সপ্তাহ); // মুহূৰ্ত<২০২৬-০৩-০৩টি২০:১২:৫৫-০৫:০০>

আনহাতে Temporal বস্তুবোৰ অপৰিৱৰ্তনীয়। আপুনি এবাৰ Instant, PlainDate, ইত্যাদিৰ দৰে এটা বস্তু সৃষ্টি কৰিলে, সেই বস্তুটোৰ মান কেতিয়াও সলনি নহ’ব। টেম্প’ৰেল বস্তুবোৰৰ যোগ আৰু বিয়োগ পদ্ধতিও থাকে। কোনবোৰ বস্তুৰ প্ৰকাৰত কোনবোৰ সময় একক যোগ কৰিব পাৰি সেই বিষয়ে টেম্প’ৰেল অলপ পিকি। উদাহৰণস্বৰূপে, আপুনি এটা তৎক্ষণাত দিন যোগ কৰিব নোৱাৰে:

const now = টেম্প'ৰেল.এতিয়া.তৎক্ষণাত(); const nextWeek = এতিয়া.যোগ কৰক({ দিন: ৭ }); // RangeError: কালিক ত্ৰুটি: আটাইতকৈ ডাঙৰ একক এটা তাৰিখ একক হ'ব নোৱাৰে

কাৰণ তৎক্ষণাত বস্তুসমূহে UTC ত সময়ৰ এটা নিৰ্দিষ্ট বিন্দু প্ৰতিনিধিত্ব কৰে আৰু কেলেণ্ডাৰ-অজ্ঞানশীল। যিহেতু ডেইলাইট চেভিং টাইমৰ দৰে সময় মণ্ডলৰ নিয়মৰ ওপৰত ভিত্তি কৰি এটা দিনৰ দৈৰ্ঘ্য সলনি হ’ব পাৰে, এই গণনা এটা তৎক্ষণাত উপলব্ধ নহয়। আপুনি, কিন্তু, এই কাৰ্য্য অন্য ধৰণৰ বস্তুত সম্পাদন কৰিব পাৰে, যেনে এটা PlainDateTime: const now = টেম্প'ৰেল.এতিয়া.প্লেইনডেটটাইমআইএছঅ'(); console.log(এতিয়া.স্থানীয়String() লৈ); // ২/২৪/২০২৬, ৮:২৩:৫৯ বজাত

const nextWeek = এতিয়া.যোগ কৰক({ দিন: ৭ });

// মন কৰিব যে মূল PlainDateTime অপৰিৱৰ্তিত হৈ থাকে console.log(এতিয়া.স্থানীয়String() লৈ); // ২/২৪/২০২৬, ৮:২৩:৫৯ বজাত

console.log(পৰৱৰ্তী সপ্তাহ.toLocaleString()); // ৩/৩/২০২৬, ৮:২৩:৫৯ বজাত

আপুনি দুটা Moment বা Temporal বস্তুৰ মাজত কিমান সময় আছে সেইটোও গণনা কৰিব পাৰে। Moment’s diff ফাংচনৰ সৈতে, আপুনি গ্ৰেনুলেৰিটিৰ বাবে এটা একক প্ৰদান কৰিব লাগিব, অন্যথা ই পাৰ্থক্যটো মিলিছেকেণ্ডত ঘূৰাই দিব। const date1 = মুহূৰ্ত('২০২৬-০২-২১T০৯:০০:০০'); const date2 = মুহূৰ্ত('২০২৬-০২-২২টি১০:৩০:০০');

console.log(তাৰিখ2.diff(তাৰিখ1)); // ৯১৮০০০০০০০

console.log(তাৰিখ2.diff(তাৰিখ1, 'দিন')); // ১

এটা Temporal বস্তুৰ সৈতে এইটো কৰিবলৈ, আপুনি ইয়াৰ until বা since পদ্ধতিলৈ আন এটা Temporal বস্তু পাছ কৰিব পাৰে। ই এটা Temporal.Duration বস্তু ঘূৰাই দিয়ে য'ত সময়ৰ পাৰ্থক্যৰ বিষয়ে তথ্য থাকে। সময়কাল বস্তুৰ পাৰ্থক্যৰ প্ৰতিটো উপাদানৰ বাবে বৈশিষ্ট্য আছে, আৰু সময়ৰ পাৰ্থক্যক প্ৰতিনিধিত্ব কৰা এটা ISO 8601 সময়কাল ষ্ট্ৰিং সৃষ্টি কৰিব পাৰে।

const date1 = টেম্প'ৰেল.প্লেইনডেটটাইম.ফ্ৰম('২০২৬-০২-২১টি০৯:০০:০০'); const date2 = টেম্প'ৰেল.প্লেইনডেটটাইম.ফ্ৰম('২০২৬-০২-২২টি১০:৩০:০০');

// largestUnit এ প্ৰতিনিধিত্ব কৰিবলে সময়ৰ সৰ্ববৃহৎ একক ধাৰ্য্য কৰে // সময়সীমা গণনাত const diff = date2.since(তাৰিখ1, { সৰ্ববৃহৎ ইউনিট: 'দিন' });

কনছ'ল.লগ(diff.days); // ১

কনছ'ল.লগ(diff.hours); // ১

console.log(diff.মিনিট); // ৩০

কনছ'ল.লগ (diff.toString()); // পি১ডিটি১এইচ৩০এম // (ISO 8601 সময়সীমা ষ্ট্ৰিং: 1 দিন, 1 ঘন্টা, 30 মিনিট)

তাৰিখ আৰু সময় তুলনা কৰা Moment আৰু Temporal দুয়োটাই আপোনাক তাৰিখ আৰু সময় তুলনা কৰিবলৈ দিয়ে যাতে কোনটো আনটোৰ আগত আহে, কিন্তু API ৰ সৈতে বিভিন্ন পদ্ধতি লওক। Moment এ দুটা Moment বস্তু তুলনা কৰিবলৈ isBefore, isAfter, আৰু isSame আদি পদ্ধতি প্ৰদান কৰে। const date1 = মুহূৰ্ত('২০২৬-০২-২১T০৯:০০:০০'); const date2 = মুহূৰ্ত('২০২৬-০২-২২টি১০:৩০:০০');

console.log(তাৰিখ1.আগতে(তাৰিখ2)); // সত্য

টেম্পৰেলে একে ধৰণৰ দুটা বস্তুৰ মাজত তুলনা কৰিবলৈ ষ্টেটিক তুলনা পদ্ধতি ব্যৱহাৰ কৰে। ই -1 ঘূৰাই দিয়ে যদি প্ৰথম তাৰিখ দ্বিতীয় তাৰিখৰ আগত আহে, 0 যদি সিহঁত সমান হয়, বা 1 যদি প্ৰথম তাৰিখ দ্বিতীয়ৰ পিছত আহে। তলৰ উদাহৰণে দুটা PlainDate বস্তু কেনেকৈ তুলনা কৰিব লাগে দেখুৱাইছে। Temporal.PlainDate.compare লৈ দুয়োটা যুক্তি PlainDate বস্তু হ'ব লাগিব।

const date1 = Temporal.PlainDate.from({ বছৰ: ২০২৬, মাহ: ২, দিন: ২৪ }); const date2 = Temporal.PlainDate.from({ বছৰ: ২০২৬, মাহ: ৩, দিন: ২৪ });

// date1 date2 ৰ আগত আহে, গতিকে -1 console.log(Temporal.PlainDate.compare(তাৰিখ1, তাৰিখ2));

// আমি যদি বিভিন্ন ধৰণৰ দুটা বস্তু তুলনা কৰিবলৈ চেষ্টা কৰো তেন্তে ত্ৰুটি console.log(Temporal.PlainDate.compare(তাৰিখ1, টেম্প'ৰেল.এতিয়া.তৎক্ষণাত())); // TypeError: কালিক ত্ৰুটি: অবৈধ PlainDate ক্ষেত্ৰসমূহ প্ৰদান কৰা হৈছে।

বিশেষকৈ, ইয়াৰ ফলত Temporal বস্তুসমূহৰ এটা এৰে কালক্ৰমিকভাৱে সজাবলৈ সহজ হয়। // Temporal.PlainDate বস্তুৰ এটা এৰে const তাৰিখসমূহ = [ ... ];

// তুলনাকাৰী ফাংচন হিচাপে Temporal.PlainDate.compare ব্যৱহাৰ কৰক dates.sort(কালিক.প্লেইন তাৰিখ.তুলনা);

সময় মণ্ডল ৰূপান্তৰ মূল Moment লাইব্ৰেৰীয়ে সময় মণ্ডল ৰূপান্তৰ সমৰ্থন নকৰে। যদি আপুনি এই কাৰ্য্যকৰীতাৰ প্ৰয়োজন হয়, আপুনি moment-timezone সৰঞ্জাম সংস্থাপন কৰিব লাগিব । এই সৰঞ্জাম গছ-লৰচৰযোগ্য নহয়, আৰু সেয়েহে আপোনাৰ বাণ্ডিলৰ আকাৰত যথেষ্ট যোগ কৰিব পাৰে । আপুনি এবাৰ moment-timezone ইনষ্টল কৰিলে, আপুনি Moment বস্তুসমূহক tz পদ্ধতিৰ সৈতে বিভিন্ন সময় মণ্ডললৈ ৰূপান্তৰ কৰিব পাৰিব। অন্যান্য Moment অপাৰেচনৰ দৰেই ই অন্তৰ্নিহিত বস্তুটোক মিউটেট কৰেবস্তু। // আমেৰিকাৰ পূব সময় ধৰি লৈ const এতিয়া = মুহূৰ্ত(); console.log(এতিয়া); // মুহূৰ্ত<২০২৬-০২-২৮টি২০:০৮:২০-০৫:০০>

// প্ৰশান্ত মহাসাগৰীয় সময়লৈ ৰূপান্তৰ কৰক। // মূল পূবৰ সময় হেৰাই গৈছে। now.tz('আমেৰিকা/লছ_এঞ্জেলছ'); console.log(এতিয়া); // মুহূৰ্ত<২০২৬-০২-২৮টি১৭:০৮:২০-০৮:০০>

এটা Temporal.ZonedDateTime বস্তু ব্যৱহাৰ কৰাৰ সময়ত সময় মণ্ডল কাৰ্য্যকৰীতাক Temporal API ত নিৰ্মিত কৰা হয়। এই বস্তুসমূহে এটা withTimeZone পদ্ধতি অন্তৰ্ভুক্ত কৰে যি এটা নতুন ZonedDateTime ঘূৰাই দিয়ে যি সময়ত একেটা মুহূৰ্তক প্ৰতিনিধিত্ব কৰে, কিন্তু ধাৰ্য্য কৰা সময় মণ্ডলত। // আকৌ, আমেৰিকাৰ পূব সময় ধৰি লৈ const now = টেম্প'ৰেল.এতিয়া.zonedDateTimeISO(); console.log(এতিয়া.স্থানীয়String() লৈ); // ২/২৮/২০২৬, ৮:১২:০২ বজাত EST

// প্ৰশান্ত মহাসাগৰীয় সময়লৈ ৰূপান্তৰ কৰক const nowPacific = now.withTimeZone('আমেৰিকা/লছ_এঞ্জেলছ'); console.log(এতিয়া প্ৰশান্ত মহাসাগৰীয়.toLocaleString()); // ২/২৮/২০২৬, ৫:১২:০২ বজাত পি এছ টি

// মূল বস্তু অপৰিৱৰ্তিত হৈ থাকে console.log(এতিয়া.স্থানীয়String() লৈ); // ২/২৮/২০২৬, ৮:১২:০২ বজাত EST

টোকা: toLocaleString দ্বাৰা ঘূৰাই দিয়া ফৰ্মেট কৰা মানসমূহ, নামে কোৱাৰ দৰে, স্থানীয়-নিৰ্ভৰশীল। নমুনা ক'ডটো en-US লোকেলত বিকশিত কৰা হৈছিল, গতিকে ফৰ্মেটটো এনেকুৱা: 2/28/2026, 5:12:02 PM PST। আন এটা লোকেলত, এইটো বেলেগ হ’ব পাৰে। উদাহৰণস্বৰূপে, en-GB লোকেলত, আপুনি 28/2/2026, 17:12:02 GMT-8 ৰ দৰে কিবা এটা পাব। এটা বাস্তৱ জগতৰ ৰিফেক্টৰিং ধৰি লওক আমি সময় মণ্ডলৰ মাজেৰে ইভেণ্টসমূহৰ সময়সূচী নিৰ্ধাৰণৰ বাবে এটা এপ নিৰ্মাণ কৰিছো৷ এই এপৰ এটা অংশ হৈছে এটা ফাংচন, getEventTimes, যিয়ে ইভেণ্টৰ সময় আৰু তাৰিখ, এটা স্থানীয় সময় মণ্ডল, আৰু এটা লক্ষ্য সময় মণ্ডল প্ৰতিনিধিত্ব কৰা এটা ISO 8601 ষ্ট্ৰিং লয়। ফাংচনে দুয়োটা সময় মণ্ডলত ইভেন্টৰ বাবে ফৰ্মেট কৰা সময় আৰু তাৰিখ ষ্ট্ৰিং সৃষ্টি কৰে। যদি ফাংচনটোক এটা ইনপুট ষ্ট্ৰিং দিয়া হয় যিটো এটা বৈধ সময়/তাৰিখ ষ্ট্ৰিং নহয়, ই এটা ভুল পেলাব। ইয়াত মূল প্ৰণয়ন আছে, Moment ব্যৱহাৰ কৰি (মুহূৰ্ত-সময়মণ্ডল পেকেইজৰ ব্যৱহাৰৰ প্ৰয়োজনো)।

'মুহূৰ্ত-সময়মণ্ডল'ৰ পৰা মুহূৰ্ত আমদানি;

function getEventTimes(inputString, ব্যৱহাৰকাৰীসময়মণ্ডল, লক্ষ্যসময়মণ্ডল) { const timeFormat = 'এমএমএম ডি, ৱাইৱাইৱাই, h:mm:ss এটা z';

// 1. ব্যৱহাৰকাৰীৰ সময় মণ্ডলত প্ৰাৰম্ভিক মুহূৰ্ত সৃষ্টি কৰক const ইভেন্টটাইম = মুহূৰ্ত.tz( ইনপুটষ্ট্ৰিং, moment.ISO_8601, // এটা ISO 8601 ষ্ট্ৰিং আশা কৰক true, // কঠোৰ বিশ্লেষণ userTimeZone ৰ দ্বাৰা );

// এটা ভুল নিক্ষেপ কৰক যদি inputString এ এটা বৈধ তাৰিখ প্ৰতিনিধিত্ব কৰা নাছিল যদি (!ঘটনাৰ সময়.বৈধ()) { throw new Error('অবৈধ তাৰিখ/সময় ইনপুট'); }

// 2. লক্ষ্য সময় গণনা কৰক // CRITICAL: আমি ক্ল'ন কৰিব লাগিব, বা 'eventTime' চিৰদিনৰ বাবে সলনি হ'ব! const targetTime = ইভেন্টটাইম.ক্ল'ন().tz(লক্ষ্যসময়মণ্ডল);

return { স্থানীয়: ইভেন্টটাইম.ফৰ্মেট(সময়ফৰ্মেট), লক্ষ্য: targetTime.format(সময়বিন্যাস), }; }

const সূচী = getEventTimes( '২০২৬-০৩-০৫টি১৫:০০-০৫:০০', 'আমেৰিকা/নিউয়ৰ্ক', 'ইউৰোপ/লণ্ডন', );

console.log(সূচী.স্থানীয়); // ৫ মাৰ্চ, ২০২৬, বিয়লি ৩:০০:০০ বজাত EST

console.log(সূচী.লক্ষ্য); // ৫ মাৰ্চ, ২০২৬, নিশা ৮:০০:০০ বজাত জিএমটি

এই উদাহৰণত, আমি ISO 8601 ৰ এটা প্ৰত্যাশিত তাৰিখ বিন্যাস ব্যৱহাৰ কৰিছো, যি সহায়কভাৱে Moment ত নিৰ্মিত। আমি কঠোৰ বিশ্লেষণো ব্যৱহাৰ কৰিছো, যাৰ অৰ্থ হৈছে Moment এ ফৰ্মেটৰ সৈতে মিল নোহোৱা তাৰিখ ষ্ট্ৰিঙৰ সৈতে অনুমান কৰিবলৈ চেষ্টা নকৰে। যদি এটা নন-ISO তাৰিখ ষ্ট্ৰিং পাছ কৰা হয়, ইয়াৰ ফলত এটা অবৈধ তাৰিখ বস্তু হ'ব, আৰু আমি এটা ভুল নিক্ষেপ কৰো। Temporal প্ৰণয়ন দেখাত একে, কিন্তু কেইটামান মূল পাৰ্থক্য আছে।

function getEventTimes(inputString, ব্যৱহাৰকাৰীসময়মণ্ডল, লক্ষ্যসময়মণ্ডল) { // 1. ইনপুটটো পোনপটীয়াকৈ এটা তৎক্ষণাত বিশ্লেষণ কৰক, তাৰ পিছত সৃষ্টি কৰক // ব্যৱহাৰকাৰীৰ জ'নত এটা ZonedDateTime। const তৎক্ষণাত = টেম্প'ৰেল.Instant.from(inputString); const eventTime = তৎক্ষণাত.toZonedDateTimeISO(ব্যৱহাৰকাৰীৰ সময়ৰ অঞ্চল);

// 2. লক্ষ্য অঞ্চললৈ ৰূপান্তৰ কৰক // ই স্বয়ংক্ৰিয়ভাৱে এটা NEW বস্তু ঘূৰাই দিয়ে; 'eventTime' নিৰাপদ। const targetTime = ইভেন্টটাইম.withTimeZone(লক্ষ্যসময়মণ্ডল);

// 3. Intl ব্যৱহাৰ কৰি ফৰ্মেট কৰক (বিল্ট-ইন) const বিকল্পসমূহ = { বছৰ: 'সংখ্যাগত', মাহ: 'চুটি', দিন: 'সংখ্যাগত', ঘন্টা: 'সংখ্যাগত', মিনিট: '২-ডিজিট', দ্বিতীয়: '২-ডিজিট', timeZoneName: 'চমু'। };

return { স্থানীয়: eventTime.toLocaleString(নেভিগেটৰ.ভাষা, বিকল্পসমূহ), লক্ষ্য: targetTime.toLocaleString(নেভিগেটৰ.ভাষা, বিকল্পসমূহ) }; }

const সূচী = getEventTimes( '২০২৬-০৩-০৫টি১৫:০০-০৫:০০', 'আমেৰিকা/নিউ_য়ৰ্ক', 'ইউৰোপ/লণ্ডন', );

console.log(সূচী.স্থানীয়); // ৫ মাৰ্চ, ২০২৬, ৩:০০:০০ বজাত EST

console.log(সূচী.লক্ষ্য); // ৫ মাৰ্চ, ২০২৬, নিশা ৮:০০:০০ বজাত জিএমটি

Moment ৰ সৈতে, আমি ফলাফল তাৰিখ ষ্ট্ৰিংসমূহৰ বাবে এটা ফৰ্মেট ষ্ট্ৰিং স্পষ্টভাৱে ধাৰ্য্য কৰিব লাগিব। ব্যৱহাৰকাৰীৰ অৱস্থান বা লোকেল যিয়েই নহওক কিয়, ইভেণ্টৰ সময় সদায় ৫ মাৰ্চ, ২০২৬, ৩:০০:০০ হিচাপে ফৰ্মেট কৰা হ’বpm EST. লগতে, আমি স্পষ্টভাৱে ব্যতিক্ৰম নিক্ষেপ কৰিব নালাগে। যদি এটা অবৈধ ষ্ট্ৰিং Temporal.Instant.from লৈ পাছ কৰা হয়, Temporal এ আমাৰ বাবে ব্যতিক্ৰমটো পেলাব। এটা কথা মন কৰিবলগীয়া যে কঠোৰ পাৰ্চিঙৰ সৈতেও, Moment সংস্কৰণটো এতিয়াও অধিক নম্ৰ। টেম্পৰেলৰ বাবে ষ্ট্ৰিংৰ শেষত সময় মণ্ডল অফছেটৰ প্ৰয়োজন। আপুনি এইটোও মন কৰিব লাগে যে যিহেতু আমি navigator.language ব্যৱহাৰ কৰিছো, এই ক’ড কেৱল এটা ব্ৰাউজাৰ পৰিৱেশত চলিব, কাৰণ navigator এটা Node.js পৰিৱেশত সংজ্ঞায়িত কৰা হোৱা নাই। টেম্প’ৰেল প্ৰণয়নে ব্ৰাউজাৰৰ বৰ্তমানৰ লোকেল (navigator.language) ব্যৱহাৰ কৰে, গতিকে ব্যৱহাৰকাৰীয়ে স্বয়ংক্ৰিয়ভাৱে ইভেণ্ট সময়সমূহ তেওঁলোকৰ স্থানীয় সময় বিন্যাসত ফৰ্মেট কৰা পাব। এন-ইউ এছ লোকেলত, এইটো ৫ মাৰ্চ, ২০২৬, ৩:০০:০০ বজাত EST। কিন্তু যদি ব্যৱহাৰকাৰীজন উদাহৰণস্বৰূপে লণ্ডনত থাকে, তেন্তে ইভেণ্টৰ সময়সমূহ ৫ মাৰ্চ ২০২৬, ১৫:০০:০০ GMT-৫ হিচাপে ফৰ্মেট কৰা হ’ব। সাৰাংশ

ক্ৰিয়া মুহূৰ্ত.js টেম্পৰেল বৰ্তমান সময় মুহূৰ্ত() টেম্প'ৰেল.এতিয়া.জোন কৰা তাৰিখসময়ISO() ISO বিশ্লেষণ কৰা হৈছে মুহূৰ্ত(str) টেম্প'ৰেল.Instant.from(str) সময় যোগ কৰক .add(7, 'দিন') (মিউটেট) .add({ দিন: ৭ }) (নতুন বস্তু) পাৰ্থক্য .diff(অন্য, 'ঘন্টা') .যিহেতু(অন্য).ঘণ্টা সময় মণ্ডল .tz('জোন/নাম') .withTimeZone('জোন/নাম')

প্ৰথম দৃষ্টিত, পাৰ্থক্যটো অলপ বেলেগ হ'ব পাৰে (আৰু Temporal ৰ ক্ষেত্ৰত, কেতিয়াবা অধিক verbose আৰু অধিক কঠোৰ) বাক্য গঠন, কিন্তু Moment.js তকৈ Temporal ব্যৱহাৰ কৰাৰ কেইবাটাও মূল সুবিধা আছে:

অধিক স্পষ্ট হোৱাৰ অৰ্থ হ'ল কম আচৰিত আৰু অনাকাংক্ষিত বাগ। মুহূৰ্তটো অধিক নম্ৰ যেন লাগিব পাৰে, কিন্তু ইয়াৰ লগত “অনুমানিক” জড়িত হৈ থাকে, যাৰ ফলত কেতিয়াবা ভুল তাৰিখও হ’ব পাৰে। যদি আপুনি Temporalক অবৈধ কিবা এটা দিয়ে, ই এটা ভুল নিক্ষেপ কৰে। যদি ক’ডটো চলি থাকে, তেন্তে আপুনি জানে যে আপুনি এটা বৈধ তাৰিখ পাইছে৷ Moment এ এপ্লিকেচনৰ বাণ্ডলত উল্লেখযোগ্য আকাৰ যোগ কৰিব পাৰে, বিশেষকৈ যদি আপুনি moment-timezone পেকেইজ ব্যৱহাৰ কৰিছে। Temporal এ একো যোগ নকৰে (এবাৰ ইয়াক আপোনাৰ লক্ষ্য ব্ৰাউজাৰসমূহত প্ৰেৰণ কৰা হ’লে)। অপৰিৱৰ্তনশীলতাই আপোনাক আত্মবিশ্বাস দিয়ে যে তাৰিখ ৰূপান্তৰ আৰু কাৰ্য্যসমূহ সম্পন্ন কৰাৰ সময়ত আপুনি কেতিয়াও তথ্য হেৰুৱাব বা অভাৰৰাইট নকৰে৷ আপোনাৰ প্ৰয়োজনীয়তাৰ ওপৰত নিৰ্ভৰ কৰি সময়ৰ বিভিন্ন উপস্থাপন (Instant, PlainDateTime, ZonedDateTime), য'ত Moment সদায় এটা UTC টাইমষ্টেম্পৰ চাৰিওফালে এটা ৰেপাৰ। টেম্পৰেলে তাৰিখ বিন্যাসৰ বাবে Intl APIসমূহ ব্যৱহাৰ কৰে, যাৰ অৰ্থ হৈছে আপুনি টোকেনসমূহ স্পষ্টভাৱে ধাৰ্য্য নকৰাকৈ স্থানীয়-সচেতন বিন্যাস কৰিব পাৰে।

পলিফিলৰ ওপৰত টোকা আগতে উল্লেখ কৰা অনুসৰি, এটা Temporal polyfill উপলব্ধ, @js-temporal/polyfill নামৰ এটা npm পেকেইজ হিচাপে বিতৰণ কৰা হৈছে। যদি আপুনি আজি Temporal ব্যৱহাৰ কৰিব বিচাৰে, তেন্তে Safari ৰ দৰে ব্ৰাউজাৰ সমৰ্থন কৰিবলৈ আপুনি এই polyfill ৰ প্ৰয়োজন হ’ব যিয়ে এতিয়াও API প্ৰেৰণ কৰা নাই৷ ইয়াৰ লগত বেয়া খবৰটো হ’ল ই আপোনাৰ বাণ্ডিলৰ আকাৰত যোগ দিব। ভাল খবৰটো হ’ল যে ই এতিয়াও মুহূৰ্ত বা মুহূৰ্ত-টাইমজ’নতকৈ যথেষ্ট কম যোগ কৰে। ইয়াত Bundlephobia.com দ্বাৰা প্ৰতিবেদন কৰা বাণ্ডল আকাৰসমূহৰ তুলনা কৰা হৈছে, এটা ৱেবছাইট যিয়ে npm পেকেইজৰ আকাৰৰ তথ্য উপস্থাপন কৰে (Bundlephobia বিশ্লেষণ চাবলৈ প্ৰতিটো পেকেইজৰ নামত ক্লিক কৰক):

পেকেজ মিনিফাইড মিনিফাইড আৰু gzipped @js-টেম্পৰেল/পলিফিল ১৫৪.১ কেবি ৪৪.১ কেবি মুহূৰ্ত ২৯৪.৪ কেবি ৭৫.৪ কেবি মুহূৰ্ত-সময়মণ্ডল ১ মেগাবাইট ১১৪.২ কেবি

পলিফিলৰ ঐতিহাসিকভাৱে মেম’ৰি ব্যৱহাৰৰ আশে-পাশে কিছুমান পৰিৱেশন সমস্যাও আছিল, আৰু এই লেখাটো লিখাৰ সময়ত, ইয়াক আলফা অৱস্থাত বুলি ধৰা হৈছে। ইয়াৰ বাবেই আপুনি ইয়াক অধিক পৰিপক্ক অৱস্থাত উপনীত নোহোৱালৈকে উৎপাদনত ব্যৱহাৰ কৰিব নিবিচাৰিবও পাৰে। আনটো ভাল খবৰটো হ’ল যে আশাকৰোঁ পলিফিলৰ আৰু বেছি দিন প্ৰয়োজন নহ’ব (যদিহে আপুনি পুৰণি ব্ৰাউজাৰসমূহ সমৰ্থন কৰিব নালাগে, অৱশ্যেই)। এই বাতৰি লিখাৰ সময়ত, Temporal এ Chrome, Edge, আৰু Firefox ত শিপিং কৰিছে। ই এতিয়াও ছাফাৰীত একেবাৰে প্ৰস্তুত হোৱা নাই, যদিও ইয়াক শেহতীয়া প্ৰযুক্তি পূৰ্বদৰ্শনত এটা চলনটাইম ফ্লেগৰ সৈতে উপলব্ধ যেন লাগে।

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