পটভূমি
জাভাস্ক্রিপ্টের Date
অবজেক্টটি ইউটিসি-তে অভ্যন্তরীণভাবে সময় ট্র্যাক করে, তবে সাধারণত ইনপুট গ্রহণ করে এবং কম্পিউটারটি চালিত হওয়ার স্থানীয় সময়ে আউটপুট উত্পাদন করে। অন্যান্য সময় অঞ্চলে সময় নিয়ে কাজ করার জন্য এতে খুব কম সুবিধা রয়েছে।
লিপের সেকেন্ড বিবেচনা না করে কোনও Date
অবজেক্টের অভ্যন্তরীণ উপস্থাপনা হ'ল একক সংখ্যা, যা মিলি সেকেন্ডের সময়কে ছাড়িয়ে গেছে 1970-01-01 00:00:00 UTC
। তারিখ অবজেক্টে নিজেই কোনও টাইম জোন বা স্ট্রিং ফর্ম্যাট নেই। যখন Date
বস্তুর বিভিন্ন ফাংশন ব্যবহার করা হয়, কম্পিউটারের স্থানীয় সময় অঞ্চলটি অভ্যন্তরীণ উপস্থাপনায় প্রয়োগ করা হয়। যদি ফাংশনটি একটি স্ট্রিং উত্পাদন করে, তবে সেই স্ট্রিংটি কীভাবে উত্পাদন করা যায় তা নির্ধারণের জন্য কম্পিউটারের লোকাল তথ্য বিবেচনা করা যেতে পারে। বিবরণ ফাংশন অনুযায়ী পৃথক, এবং কিছু বাস্তবায়ন-নির্দিষ্ট।
Date
অ-স্থানীয় সময় অঞ্চলগুলির সাথে অবজেক্টটি কেবলমাত্র কাজ করতে পারে:
এটি যে কোনও সময় অঞ্চল থেকে একটি সংখ্যাসূচক ইউটিসি অফসেটযুক্ত একটি স্ট্রিং পার্স করতে পারে। এটি পার্সিং হওয়া মানটি সামঞ্জস্য করতে এবং ইউটিসি সমতুল্য সংরক্ষণ করে এটি ব্যবহার করে। আসল স্থানীয় সময় এবং অফসেট ফলাফল Date
অবজেক্টে ধরে রাখা হয় না । উদাহরণ স্বরূপ:
var d = new Date("2020-04-13T00:00:00.000+08:00");
d.toISOString() //=> "2020-04-12T16:00:00.000Z"
d.valueOf() //=> 1586707200000 (this is what is actually stored in the object)
ECMASCript Internationalization API (ওরফে "ইন্টেল") প্রয়োগ করা পরিবেশে , কোনও Date
বস্তু একটি নির্দিষ্ট সময় অঞ্চল শনাক্তকারীকে সমন্বিত একটি লোকেল-নির্দিষ্ট স্ট্রিং তৈরি করতে পারে। এটি timeZone
বিকল্প toLocaleString
এবং এর বিভিন্নতার মাধ্যমে সম্পন্ন হয় । বেশিরভাগ বাস্তবায়ন আইএএনএ টাইম জোন সনাক্তকারীকে সমর্থন করবে 'America/New_York'
। উদাহরণ স্বরূপ:
var d = new Date("2020-04-13T00:00:00.000+08:00");
d.toLocaleString('en-US', { timeZone: 'America/New_York' })
//=> "4/12/2020, 12:00:00 PM"
// (midnight in China on Apring 13th is noon in New York on April 12th)
বেশিরভাগ আধুনিক পরিবেশগুলি IANA সময় অঞ্চল শনাক্তকারীদের সম্পূর্ণ সেটকে সমর্থন করে ( এখানে সামঞ্জস্যতার টেবিলটি দেখুন )। যাইহোক, মন যে কেবল শনাক্তকারী রাখতে প্রয়োজনীয় তথ্যের দ্বারা সমর্থিত হবে 'UTC'
, এইভাবে আপনাকে যত্নসহকারে পরীক্ষা করা উচিত যদি তোমরা পুরোনো ব্রাউজারে বা এটিপিকাল পরিবেশের (উদাহরণস্বরূপ, লাইটওয়েট IOT ডিভাইসের) সমর্থন করতে হবে।
লাইব্রেরি
বেশ কয়েকটি লাইব্রেরি রয়েছে যা সময় অঞ্চলগুলির সাথে কাজ করতে ব্যবহৃত হতে পারে। যদিও তারা এখনও Date
অবজেক্টটিকে অন্যরকম আচরণ করতে পারে না , তারা সাধারণত স্ট্যান্ডার্ড আইএএনএ টাইমজোন ডাটাবেস প্রয়োগ করে এবং এটি জাভাস্ক্রিপ্টে ব্যবহারের জন্য ফাংশন সরবরাহ করে। আধুনিক গ্রন্থাগারগুলি ইনটেল এপিআই দ্বারা সরবরাহিত টাইম জোনের ডেটা ব্যবহার করে তবে পুরানো গ্রন্থাগারগুলিতে সাধারণত ওভারহেড থাকে বিশেষত আপনি যদি ওয়েব ব্রাউজারে চলছেন তবে ডাটাবেসটি কিছুটা বড় হতে পারে। এর মধ্যে কয়েকটি লাইব্রেরি আপনাকে নির্বাচিতভাবে ডেটা সেট হ্রাস করতে দেয়, হয় সময় অঞ্চলগুলি দ্বারা সমর্থিত এবং / অথবা আপনি যে তারিখগুলির সাথে কাজ করতে পারবেন তার দ্বারা পরিসর প্রাপ্ত হয়।
এখানে গ্রন্থাগারগুলি বিবেচনা করার জন্য রয়েছে:
অন্তর্নিহিত গ্রন্থাগারসমূহ
নতুন বিকাশের জন্য এই বাস্তবায়নগুলির মধ্যে একটি বেছে নেওয়া উচিত, যা তাদের সময় অঞ্চল ডেটার জন্য ইন্টেল এপিআইয়ের উপর নির্ভর করে:
নন-ইন্টেল গ্রন্থাগারগুলি
এই গ্রন্থাগারগুলি রক্ষণাবেক্ষণ করা হয় তবে তাদের নিজস্ব সময় অঞ্চল ডেটা প্যাকেজিংয়ের বোঝা বহন করে, যা বেশ বড় হতে পারে।
* যদিও মোমেন্ট এবং মোমেন্ট-টাইমজোন আগে সুপারিশ করা হয়েছিল, মোমেন্ট টিম এখন ব্যবহারকারীদের নতুন বিকাশের জন্য লাক্সনকে পছন্দ করে।
বন্ধ লাইব্রেরি
এই গ্রন্থাগারগুলি আনুষ্ঠানিকভাবে বন্ধ হয়ে গেছে এবং আর ব্যবহার করা উচিত নয়।
ভবিষ্যতের প্রস্তাব
TC39 টেম্পোরাল প্রস্তাবনা লক্ষ্য জাভাস্ক্রিপ্ট ভাষা নিজেই তারিখ ও সময় সঙ্গে কাজ করার জন্য মান বস্তুর একটি নতুন সেট প্রদান। এটিতে সময় অঞ্চল সচেতন বস্তুর সমর্থন অন্তর্ভুক্ত থাকবে।