সংক্ষিপ্ত উত্তর
জাভাস্ক্রিপ্ট পূরণ করে এমন কোনও "সর্বজনীন" ডকুমেন্টেশন নেই; প্রতিটি ব্রাউজারে জাভাস্ক্রিপ্ট আসলে বাস্তবায়ন। তবে, এমন একটি মান আছে যা বেশিরভাগ আধুনিক ব্রাউজারে অনুসরণ করতে থাকে এবং এটিই EMCAScript স্ট্যান্ডার্ড; ECMAScript স্ট্যান্ডার্ড স্ট্রিংগুলি ন্যূনতমভাবে, আইএসও 8601 সংজ্ঞাটির একটি পরিবর্তিত বাস্তবায়ন গ্রহণ করবে।
এগুলি ছাড়াও, আইইটিএফ দ্বারা প্রস্তুত একটি দ্বিতীয় স্ট্যান্ডার্ড রয়েছে যা ব্রাউজারগুলিও অনুসরণ করতে পারে, যা আরএফসি 2822-এ তৈরি টাইমস্ট্যাম্পগুলির সংজ্ঞা। প্রকৃত নথিপত্র নীচে রেফারেন্স তালিকায় পাওয়া যাবে।
এ থেকে আপনি মৌলিক কার্যকারিতা আশা করতে পারেন, তবে যা "হওয়া উচিত" তা অন্তর্নিহিতভাবে "যা" তা নয়। আমি এই প্রক্রিয়াগতভাবে কিছুটা গভীরতার সাথে যাচ্ছি, যদিও দেখা যাচ্ছে যে কেবল তিনজন লোকই এই প্রশ্নের উত্তর দিয়েছে (স্কট, গফবললজিক, এবং পেলার) যিনি আমার কাছে পরামর্শ দেন যে বেশিরভাগ লোকেরা আসলে কী ঘটে তা সম্পর্কে অজ্ঞাত হন যখন আপনি হন একটি তারিখ অবজেক্ট তৈরি করুন।
দীর্ঘ উত্তর
তারিখ () অবজেক্ট দ্বারা সমর্থিত ফর্ম্যাট স্পেসিফায়ারদের তালিকাভুক্ত ডকুমেন্টেশনটি কোথায়?
প্রশ্নের উত্তর দিতে, বা সাধারণত এই প্রশ্নের উত্তর সন্ধানের জন্য, আপনাকে জানতে হবে যে জাভাস্ক্রিপ্ট কোনও উপন্যাসের ভাষা নয়; এটি আসলে ECMAScript এর একটি বাস্তবায়ন, এবং ECMAScript মান অনুসরণ করে (তবে দ্রষ্টব্য, জাভাস্ক্রিপ্টও আসলে সেই মানগুলি পূর্ব-তারিখযুক্ত; EMCAScript মানগুলি লাইভস্ক্রিপ্ট / জাভাস্ক্রিপ্টের প্রাথমিক প্রয়োগের তুলনায় নির্মিত)। বর্তমান ইসমাস্ক্রিপ্ট মান 5.1 (2011); মূলত যখন প্রশ্নটি জিজ্ঞাসা করা হয়েছিল (জুন'৯৯), তখন মানটি তিনটি ছিল (৪ টি পরিত্যাগ করা হয়েছিল), তবে ২০০৯ এর শেষের দিকে পোস্টের অল্প সময়ের মধ্যে ৫ টি প্রকাশ করা হয়েছিল। এটির একটি সমস্যার রূপরেখা হওয়া উচিত; জাভাস্ক্রিপ্ট বাস্তবায়ন কী স্ট্যান্ডার্ড অনুসরণ করতে পারে, বাস্তবে যা আছে তা প্রতিবিম্বিত করতে পারে না, কারণ ক) এটি একটি প্রদত্ত মানটির বাস্তবায়ন, খ) মানকটির সমস্ত বাস্তবায়ন শুদ্ধ নয়,
মূলত, জাভাস্ক্রিপ্ট নিয়ে কাজ করার সময়, আপনি একটি বাস্তবায়ন (জাভাস্ক্রিপ্ট নিজেই) এর একটি ডেরাইভেটিভ (ব্রাউজারের সাথে নির্দিষ্ট জাভাস্ক্রিপ্ট) এর সাথে কাজ করছেন। গুগলের ভি 8, উদাহরণস্বরূপ, ECMAScript 5.0 প্রয়োগ করে, কিন্তু ইন্টারনেট এক্সপ্লোরারের জেএসক্রিপ্ট কোনও ইসমাস্ক্রিপ্ট স্ট্যান্ডার্ড মেনে চলার চেষ্টা করে না, তবুও ইন্টারনেট এক্সপ্লোরার 9 টি ইসমাস্ক্রিপ্ট 5.0 এর সাথে সামঞ্জস্য করে না।
যখন একটি একক যুক্তি নতুন তারিখ () এ পাস করা হয়, তখন এটি এই ফাংশনটির প্রোটোটাইপটি কাস্ট করে:
new Date(value)
যখন দুটি বা ততোধিক যুক্তি নতুন তারিখের () এ পাস করা হয় তখন এটি এই ফাংশনটির প্রোটোটাইপটি কাস্ট করে:
new Date (year, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] )
এই দুটি ফাংশনই পরিচিত হওয়া উচিত, তবে এটি অবিলম্বে আপনার প্রশ্নের উত্তর দেয় না এবং গ্রহণযোগ্য "তারিখের ফর্ম্যাট" হিসাবে কী পরিমাণ ব্যাখ্যা করে তার আরও ব্যাখ্যা প্রয়োজন explanation আপনি যখন নতুন তারিখের (স্ট্রিং) স্ট্রিংটি পাস করবেন, তখন এটি প্রোটোটাইপকে কল করবে (নোট করুন যে আমি প্রোটোটাইপ শব্দটি আলগাভাবে ব্যবহার করছি ; সংস্করণগুলি স্বতন্ত্র ফাংশনগুলি হতে পারে, বা এটি কোনও ফাংশনে শর্তাধীন বিবৃতিতে অংশ হতে পারে) জন্য "তারিখ " প্যারামিটারের যুক্তি হিসাবে আপনার স্ট্রিং সহ নতুন তারিখ (মান) । এই ফাংশনটি প্রথমে এটি নম্বর বা স্ট্রিং কিনা তা যাচাই করবে। এই ফাংশনটির জন্য ডকুমেন্টেশনগুলি এখানে পাওয়া যাবে:
http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.3.2
এটি থেকে, আমরা অনুমান করতে পারি যে নতুন তারিখ (মান) এর জন্য স্ট্রিং ফর্ম্যাটিংয়ের অনুমতি পাওয়ার জন্য, আমাদের তারিখ.পার্স (স্ট্রিং) পদ্ধতিটি দেখতে হবে। এই পদ্ধতির জন্য ডকুমেন্টেশন এখানে পাওয়া যাবে:
http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.4.2
এবং আমরা আরও অনুমান করতে পারি যে তারিখগুলি এখানে বর্ণিত পরিবর্তিত আইএসও 8601 এক্সটেন্ডেড ফর্ম্যাটে থাকবে বলে আশা করা হচ্ছে:
http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15
যাইহোক, আমরা অভিজ্ঞতা থেকে সনাক্ত করতে পারি যে জাভাস্ক্রিপ্টের তারিখ অবজেক্টটি অন্য ফর্ম্যাটগুলি গ্রহণ করে (এই প্রশ্নের অস্তিত্বের দ্বারা প্রথম স্থানে চাপিয়ে দেওয়া হয়) এবং এটি ঠিক আছে কারণ ECMAScript নির্দিষ্ট ফর্ম্যাটগুলি বাস্তবায়নের অনুমতি দেয়। যাইহোক, এটি এখনও উপলভ্য ফর্ম্যাটগুলিতে কী কী ডকুমেন্টেশন উপলব্ধ তা প্রশ্নের উত্তর দেয় না বা কোন ফর্ম্যাটগুলিকে প্রকৃতপক্ষে অনুমোদিত। আমরা গুগলের জাভাস্ক্রিপ্ট বাস্তবায়ন, ভি 8 দেখতে যাচ্ছি; দয়া করে নোট করুন আমি প্রস্তাব দিচ্ছি না এটি "সেরা" জাভাস্ক্রিপ্ট ইঞ্জিন (কীভাবে একজন "সেরা" বা এমনকি "ভাল" সংজ্ঞা দিতে পারেন) এবং কেউ ধরে নিতে পারে না যে ভি 8-র মধ্যে অনুমোদিত ফর্ম্যাটগুলি আজ উপলব্ধ সমস্ত ফর্ম্যাটকে উপস্থাপন করে, তবে আমি মনে করি এটি যথাযথ ধরে নিতে তারা আধুনিক প্রত্যাশা অনুসরণ করে।
গুগলের ভি 8, ডেট.জেএস, ডেটকন্সট্রাক্টর
https://code.google.com/p/v8/source/browse/trunk/src/date.js?r=18400#141
ডেটকন্সট্রাক্টর ফাংশনটি দেখে, আমরা ডেট পার্স ফাংশনটি খুঁজে পাওয়ার জন্য অনুমান করতে পারি; তবে নোট করুন যে "বছর" প্রকৃত বছর নয় এবং এটি কেবল "বছর" প্যারামিটারের একটি রেফারেন্স।
গুগলের ভি 8, ডেট.জেএস, ডেট পার্স
https://code.google.com/p/v8/source/browse/trunk/src/date.js?r=18400#270
এটি% ডেটপার্সস্ট্রিংকে কল করে যা আসলে একটি সি ++ ফাংশনের জন্য একটি রান-টাইম ফাংশন রেফারেন্স। এটি নিম্নলিখিত কোড বোঝায়:
গুগলের ভি 8, রানটাইম.সি.সি,% ডেট পার্সস্ট্রিং
https://code.google.com/p/v8/source/browse/trunk/src/runtime.cc?r=18400#9559
এই ফাংশনটির সাথে আমরা যে ফাংশন কলটির সাথে সম্পর্কিত তা ডেট পার্সার :: পার্স (); এই ফাংশন কলগুলির চারপাশে যুক্তি উপেক্ষা করুন, এগুলি এনকোডিং প্রকারের (ASCII এবং UC16) অনুসারে কেবলমাত্র চেক। ডেট পার্সার :: পার্স এখানে সংজ্ঞায়িত করা হয়েছে:
গুগলের ভি 8, ডেট পার্সার-ইনলি এইচ, ডেট পার্সার :: পার্স
https://code.google.com/p/v8/source/browse/trunk/src/dateparser-inl.h?r=18400#36
এটি হ'ল ফাংশন যা প্রকৃতপক্ষে সংজ্ঞা দেয় যেগুলি গ্রহণ করে for মূলত, এটি EMCAScript 5.0 আইএসও 8601 স্ট্যান্ডার্ডের জন্য যাচাই করে এবং যদি এটি মানদণ্ডের মান না হয় তবে এটি উত্তরাধিকারের ফর্ম্যাটগুলির ভিত্তিতে তারিখটি তৈরি করার চেষ্টা করবে। মন্তব্যের ভিত্তিতে কয়েকটি মূল বিষয়:
- প্রথম সংখ্যার আগে যে শব্দগুলি পার্সারের সাথে অজানা তা এড়ানো হবে।
- প্রথম পাঠ্য উপেক্ষা করা হয় text
- ":" এর পরে স্বাক্ষরিত স্বাক্ষরিত সংখ্যাগুলি একটি "সময়ের উপাদান" হিসাবে ব্যাখ্যা করা হয়।
- "" এর পরে স্বাক্ষরযুক্ত সংখ্যাগুলি। একটি "সময় উপাদান" হিসাবে ব্যাখ্যা করা হয়, এবং মিলিসেকেন্ড অনুসরণ করা আবশ্যক।
- ঘন্টা বা ঘন্টা মিনিটের পরে স্বাক্ষরিত সংখ্যাগুলি (যেমন +5: 15 বা +0515) টাইমজোন হিসাবে ব্যাখ্যা করা হয়।
- ঘন্টা এবং মিনিট ঘোষণা করার সময় আপনি "এইচএইচ: মিমি" বা "এইচএমএম" ব্যবহার করতে পারেন।
- যে শব্দগুলি একটি সময় অঞ্চল নির্দেশ করে তা সময় অঞ্চল হিসাবে ব্যাখ্যা করা হয়।
- অন্যান্য সমস্ত সংখ্যা "তারিখ উপাদান" হিসাবে ব্যাখ্যা করা হয়।
- এক মাসের প্রথম তিনটি অঙ্ক দিয়ে শুরু হওয়া সমস্ত শব্দকে মাস হিসাবে ব্যাখ্যা করা হয়।
- আপনি দুটি হ'ল ফর্ম্যাট: মিনিট এবং ঘন্টা একসাথে সংজ্ঞায়িত করতে পারেন: "এইচএইচ: মিমি" বা "এইচএমএম"।
- একটি সংখ্যা প্রক্রিয়া করার পরে "+", "-" এবং তুলনামূলক ")" জাতীয় প্রতীকগুলি অনুমোদিত নয়।
- একাধিক ফর্ম্যাটগুলির সাথে মেলে এমন আইটেমগুলি (উদাহরণস্বরূপ 1970-01-01) একটি স্ট্যান্ডার্ড কমপ্লায়েন্ট EMCAScript 5.0 আইএসও 8601 স্ট্রিং হিসাবে প্রক্রিয়া করা হয়।
সুতরাং এটি একটি ডেট অবজেক্টে স্ট্রিং পাস করার সময় কী প্রত্যাশা করা উচিত তার একটি প্রাথমিক ধারণা দেওয়ার জন্য আপনার যথেষ্ট হওয়া উচিত। আপনি মজিলাটি মোজিলা বিকাশকারী নেটওয়ার্কের (আইইটিএফ আরএফসি 2822 টাইমস্ট্যাম্পের সাথে সামঞ্জস্যপূর্ণ) নির্দেশ করেছেন নিম্নলিখিত স্পেসিফিকেশনটি দেখে এর আরও প্রসারিত করতে পারেন:
http://tools.ietf.org/html/rfc2822#page-14
মাইক্রোসফ্ট ডেভেলপার নেটওয়ার্ক অতিরিক্তভাবে তারিখ অবজেক্টের জন্য একটি অতিরিক্ত স্ট্যান্ডার্ডের উল্লেখ করে: ইসিএমএ -402, ইসিএমএসক্রিপ্ট আন্তর্জাতিককরণের API স্পেসিফিকেশন, যা ECMAScript 5.1 স্ট্যান্ডার্ড (এবং ভবিষ্যতের বিষয়গুলির) পরিপূরক। এটি এখানে পাওয়া যাবে:
http://www.ecma-international.org/ecma-402/1.0/
যাই হোক না কেন, এটি হাইলাইট করতে সহায়তা করবে যে এমন কোনও "ডকুমেন্টেশন" নেই যা সর্বজনীনভাবে জাভাস্ক্রিপ্টের সমস্ত প্রয়োগকে উপস্থাপন করে, তবে ডেট অবজেক্টের জন্য কী স্ট্রিং গ্রহণযোগ্য তা যথাযথ বোধ করতে পর্যাপ্ত ডকুমেন্টেশন উপস্থিত রয়েছে। বেশ বোঝা প্রশ্ন যখন আপনি এটি সম্পর্কে চিন্তা, হ্যাঁ? : P: P
তথ্যসূত্র
http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.3.2
http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.4.2
http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15
http://tools.ietf.org/html/rfc2822#page-14
http://www.ecma-international.org/ecma-402/1.0/
https://code.google.com/p/v8/source/browse/trunk/src/date.js?r=18400#141
https://code.google.com/p/v8/source/browse/trunk/src/date.js?r=18400#270
https://code.google.com/p/v8/source/browse/trunk/src/runtime.cc?r=18400#9559
https://code.google.com/p/v8/source/browse/trunk/src/dateparser-inl.h?r=18400#36
সম্পদ
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
http://msdn.microsoft.com/en-us/library/ff743760(v=vs.94).aspx