एक विशिष्ट समय पर जावास्क्रिप्ट। TempusJS - जावास्क्रिप्ट में तारीख के साथ काम करना। दिनांक ऑटोडेटेक्शन और पार्सिंग


जावास्क्रिप्ट - दिनांक में दिनांक और समय के साथ काम करने के लिए एक विशेष वस्तु है। यह ऑब्जेक्ट जावास्क्रिप्ट के लगभग सभी संस्करणों द्वारा समर्थित है, और आप इसे संगतता समस्याओं के लिए वापस देखे बिना उपयोग कर सकते हैं।

दिनांक ऑब्जेक्ट में दिनांक और समय को स्पष्ट रूप से संग्रहीत नहीं किया जाता है, लेकिन अधिकांश प्रोग्रामिंग भाषाओं में - यूनिक्स के जन्म के बाद से मिलीसेकंड की संख्या के रूप में, अर्थात। 1 जनवरी, 1970 को 0 घंटे 0 मिनट से। दिनांक ऑब्जेक्ट की एक विशिष्ट विशेषता यह है कि सभी श्रेणी मानों में शून्य-आधारित सूचकांक होते हैं। इसका मतलब है कि जनवरी में 0 (महीने # 0) का सूचकांक होगा, और दिसंबर बारहवें नहीं बल्कि ग्यारहवें महीने होगा। सप्ताह के दिनों, घंटों, मिनटों आदि के लिए भी यही सच है।

दिनांक ऑब्जेक्ट बनाना बहुत आसान है:

// वर्तमान तिथि-समय वार तिथि \u003d नई तिथि (); // तारीख-स्ट्रिंग या संख्या से दिनांक दिनांक \u003d नई तिथि (दिनांक); // अलग-अलग मूल्यों से तिथि-समय \u003d नई तिथि (वर्ष, महीना, दिन, घंटा, मिनट, दूसरा, मिलीसेकंड);

दिनांक ऑब्जेक्ट में बहुत उपयोगी विधियाँ हैं जो आपको दिनांक-समय के अलग-अलग घटकों के साथ काम करने की अनुमति देती हैं, साथ ही दिए गए प्रारूप में दिनांक की शुद्धता और सही आउटपुट की जांच करने के लिए।

दिनांक-समय घटक प्राप्त करने के लिए तरीके
getFullYear वर्ष लौटाता है (उदाहरण के लिए, 2011)।
getYear साल लौटता है। गेटाइयर विधि का उद्देश्य getFullYear के उद्देश्य के समान है, हालांकि, इस विधि को पदावनत और पदावनत किया जाता है। उनके काम के परिणाम अस्पष्ट हैं: 1900 से 1999 तक की तारीख सीमा के लिए, विधि शताब्दी में वर्ष की संख्या (दो-अंक, उदाहरण के लिए, 77), और इस सीमा के बाहर की तारीखों के लिए, पूर्ण मान लौटाया जाता है (उदाहरण के लिए, चार-अंक, 2009)।
getMonth महीना लौटाता है।
तारीख लें महीने का दिन लौटाता है (महीने में संख्या)।
getHours प्रति घंटा देता है।
getMinutes मिनट लौटाता है।
getSeconds दूसरा लौटाता है।
getMilliseconds मिलीसेकंड लौटाता है।
getDay सप्ताह का दिन लौटाता है।
समय निकालो ऑब्जेक्ट द्वारा संग्रहित मिलीसेकंड ऑफ़सेट लौटाता है।
डेटाटाइम घटकों को बदलने के लिए तरीके
setFullYear वर्ष निर्धारित करता है।
setYear वर्ष निर्धारित करता है। सेटयियर विधि का उद्देश्य सेटफुलियर के उद्देश्य के समान है, लेकिन इस विधि को पदावनत और पदावनत (साथ ही प्राप्त विधि) किया जाता है।
setMonth महीना तय करता है।
तारीख सेट करें महीने (महीने का दिन) में तारीख निर्धारित करता है।
setHours घंटे सेट करता है।
setMinutes मिनट सेट करता है।
setSeconds दूसरा सेट करता है।
setMilliseconds मिलीसेकंड सेट करता है।
निर्धारित समय सेट मिलीसेकंड ऑफसेट 00:00:00 01/01/1970 से
दिनांक-समय स्वरूपण और आउटपुट कार्य
तार दिनांक और समय का एक स्ट्रिंग प्रतिनिधित्व लौटाता है।
toUTCString UTC समय में परिवर्तित दिनांक और समय का एक स्ट्रिंग प्रतिनिधित्व लौटाता है। लौटा हुआ स्ट्रिंग प्रारूप सभी इंटरनेट मानकों के अनुरूप है।
toGMTString दिनांक और समय का एक स्ट्रिंग प्रतिनिधित्व GMT (ग्रीनविच मीन टाइम) में बदल जाता है। लौटा हुआ स्ट्रिंग प्रारूप सभी इंटरनेट मानकों के अनुरूप है।
toLocaleString ToString के समान, लेकिन उपयोगकर्ता की स्थानीयकरण सेटिंग के अनुसार स्वरूपित दिनांक और समय का एक स्ट्रिंग प्रतिनिधित्व लौटाता है।
toTimeString समय का एक स्ट्रिंग प्रतिनिधित्व लौटाता है (स्ट्रिंग में केवल समय होता है)।
toDateString तारीख का स्ट्रिंग प्रतिनिधित्व लौटाता है (स्ट्रिंग में केवल तारीख होती है)।
toLocaleTimeString टाइमस्ट्रीमिंग के समान, लेकिन उपयोगकर्ता के स्थानीयकरण सेटिंग के अनुसार स्वरूपित समय का एक स्ट्रिंग प्रतिनिधित्व लौटाता है।
toLocaleDateString ToDateString के समान, लेकिन उपयोगकर्ता की स्थानीयकरण सेटिंग के अनुसार स्वरूपित दिनांक का एक स्ट्रिंग प्रतिनिधित्व लौटाता है।
अतिरिक्त प्रकार्य
getTimezoneOffset UTC के सापेक्ष उपयोगकर्ता के कंप्यूटर पर स्थानीय समय की भरपाई करता है। ऑफसेट मिनटों में वापस आ जाता है।
पार्स फ़ंक्शन आपको स्ट्रिंग के रूप में लिखे गए दिनांक-समय की शुद्धता की जांच करने की अनुमति देता है। यदि स्ट्रिंग सही है, तो तुरंत एक दिनांक ऑब्जेक्ट बनाया जाएगा।

दिनांक ऑब्जेक्ट में UTC दिनांक के साथ काम करने के कई तरीके भी शामिल हैं। ये फ़ंक्शन पूरी तरह से पहले से ही विचार किए गए लोगों के समान हैं, लेकिन उनके पास नाम में "UTC" उपसर्ग है और केवल "सार्वभौमिक" समय के साथ काम करते हैं: getUTCSeconds, setUTCFullYear, आदि।

आइए तारीखों के साथ काम करने के एक उदाहरण पर विचार करें:

और यहाँ इस स्क्रिप्ट का परिणाम है:


जैसा कि आप देख सकते हैं, तारीख का प्रतिनिधित्व उपयोग किए गए प्रारूप के आधार पर काफी भिन्न होता है। इसलिए, तिथि-समय के साथ काम करते समय, आपको कुछ सरल नियमों का पालन करना चाहिए:

1. जब भी संभव हो यूटीसी या जीएमटी प्रारूपों का उपयोग करें। वितरित समाधान बनाते समय यह विशेष रूप से महत्वपूर्ण है (उदाहरण के लिए, भुगतान प्रणालियों के ग्राहक)। एक सामान्य संदर्भ समय का उपयोग करना आपको गारंटी देगा (यद्यपि एक सौ प्रतिशत नहीं) कि आप और आपके दूरस्थ साथी उसी तरह प्राप्त आंकड़ों की व्याख्या करेंगे।

2. उपयोगकर्ता के लिए उन्हें प्रदर्शित करते समय स्थानीयकृत तिथि और समय का उपयोग करना समझ में आता है। अन्य सभी मामलों में, स्थानीयकृत डेटा को मना करना बेहतर है।

3. यदि आपको अभी भी एक स्थानीय तारीख और समय का उपयोग करना है - संदर्भ समय (यूटीसी या जीएमटी) के सापेक्ष स्थानीय समय की ऑफसेट को ध्यान में रखना न भूलें।

इन नियमों का पालन करने से आप अधिकांश तार्किक बगों और कमियों से बच जाएंगे, जिसका अर्थ है कि यह आपके कोड को अधिक स्थिर और उच्च गुणवत्ता का बना देगा।

एक प्रोग्रामर के लिए तारीखों और समय के साथ काम करने से बचना दुर्लभ है। सामान्य तौर पर, तिथि / समय एक मूल अवधारणा है, और अधिकांश भाषाओं में इस डेटा प्रकार के साथ काम करने के लिए अंतर्निहित तंत्र हैं। ऐसा लगता है कि जेएस कोई अपवाद नहीं है, एक अंतर्निहित तिथि प्रकार है, प्रोटोटाइप में बहुत सारे कार्य हैं, हालांकि ...

कौन दोषी है
पहली समस्या तब होती है जब आपको UTC और स्थानीय के अलावा किसी समय क्षेत्र में दिनांक / समय निर्धारित करने की आवश्यकता होती है। दिनांक निर्माता के पास ऐसा कोई पैरामीटर नहीं है।

नई तारीख़ (); नई तारीख (मूल्य); नई तिथि (dateString); नई तिथि (वर्ष, महीना [, दिन [, घंटा], मिनट [, दूसरा [, मिलीसेकंड]]]]]);
एकमात्र विकल्प जहां आप यूटीसी के सापेक्ष एक ऑफसेट निर्दिष्ट कर सकते हैं तीसरा तरीका है। इस प्रारूप में कंस्ट्रक्टर को कॉल करने से आप स्ट्रिंग के भाग के रूप में ऑफसेट पास कर सकते हैं:

नई तिथि ("सूर्य फरवरी 01 1998 00:00:00 GMT + 0700")
स्ट्रिंग को RFC2822 प्रारूप में स्वीकार किया जाता है, जो मैन्युअल रूप से दर्ज करने के लिए बहुत असुविधाजनक और कठिन है। उपयोगकर्ता इनपुट से इस तरह की स्ट्रिंग प्राप्त करना लगभग असंभव है। मैं उस व्यक्ति की कल्पना नहीं कर सकता जो इस प्रारूप में एक तारीख दर्ज करने के लिए सहमत होगा।

इस तथ्य के बावजूद कि तिथि में आप यूटीसी समय क्षेत्र के लिए अलग से सभी पैरामीटर सेट कर सकते हैं - इससे समस्या हल नहीं होती है - समय क्षेत्र स्थानीय रहेगा। लेकिन यह एकमात्र समस्या नहीं है।

यूटीसी ऑफसेट निरंतर नहीं है। यह दिनांक, समय (या टाइमस्टैम्प से, यदि आपको पसंद है) और फिर से, एक समय क्षेत्र का कार्य है। उदाहरण के लिए, मास्को के लिए, आखिरी बार अनुवाद देता है:

नई तिथि (2014, 9, 25, 0, 0, 0); // 26.10.2014, 21:00:00 GMT + 3 नई तारीख (2014, 9, 27, 0, 0, 0); // 25.10.2014, 22:00:00 GMT + 4
इस प्रकार, तीसरे विकल्प में कंस्ट्रक्टर व्यावहारिक रूप से बेकार हो जाता है क्योंकि ऑफसेट पहले से जाना जाना चाहिए। और यह, जैसा कि कहा गया है, इतनी आसानी से प्राप्त नहीं किया जा सकता है। एकमात्र पुस्तकालय जो मुझे आया था, वह शिफ्टों की गणना के लिए ओल्सन के डेटाबेस का उपयोग करता है, टाइमजोन-जेएस है। इस लाइब्रेरी का उपयोग करने में समस्या यह है कि अंतर्निहित लाइब्रेरी (दिनांक / समय लेने वाले) इसके बारे में कुछ नहीं जानते हैं और आंतरिक रूप से मानक तिथि का सक्रिय रूप से उपयोग करते हैं। दिनांक ऑब्जेक्ट के साथ काम करने वाले बाकी पुस्तकालय स्पष्ट रूप से इस आधार को संदर्भित नहीं करते हैं और इससे अपडेट प्राप्त नहीं करते हैं। (टिप्पणियों में मुझे सही करें।)

व्यावसायिक अनुप्रयोगों में, समय क्षेत्र केवल तभी सार्थक होते हैं जब तिथि और समय निर्दिष्ट किया जाता है। उदाहरण के लिए, यदि कार्य दिवस 9:00 बजे शुरू होता है, तो आप शायद ही अपने सहयोगी से व्लादिवोस्तोक से 15:00 पर काम शुरू करने की उम्मीद करते हैं। समय क्षेत्र को ध्यान में नहीं रखा जाना चाहिए और इस मामले में तिथि को यूटीसी में प्रदर्शित किया जाना चाहिए। हालांकि, विभिन्न समय क्षेत्रों में एक ही समय में होने वाली नियमित घटनाओं के मामले में, एक समय क्षेत्र अभी भी आवश्यक है। उदाहरण के लिए, आपका दैनिक घोटाला आपके लिए 10:00 बजे और नोवोसिबिर्स्क के लिए 13:00 बजे शुरू होता है। वैसे, यह जीएमटी और यूटीसी के बीच बिल्कुल अंतर है। यूटीसी बिना ऑफसेट के समय है, और जीएमटी ऑफसेट के साथ समय है। मुझे एक उदाहरण के साथ समझाएं:

12/31/2014 20:59:59 मॉस्को टाइम ज़ोन में GMT 12/31/2014 23:59:59 12/31/2014 20:59:59 की तरह दिखना चाहिए। मॉस्को टाइम ज़ोन में UTC 12/31/2014 20:59 की तरह दिखना चाहिए : 59
इस अंकगणित के कारण, वे ज्यादातर भ्रमित होते हैं। दुर्भाग्य से, यह पैरामीटर सभी जगह गड़बड़ है। जेएस में टाइमज़ोन के प्रत्यक्ष संकेत की अनुपस्थिति को स्थानीय टाइमज़ोन के रूप में व्याख्या किया गया है, और यूटीसी और जीएमटी का संकेत बराबर है।

Intl। मैं कर सकता था, लेकिन मेरे पास नहीं है। विशेष रूप से, ऐसा टाइमज़ोन पैरामीटर है, लेकिन, थोड़ा आगे, मानक परिभाषित करता है: उपयोग करने के लिए समय क्षेत्र। केवल मूल्य कार्यान्वयन को "UTC" पहचानना होगा। वर्तमान में, Chrome के अलावा, कोई भी अन्य ब्राउज़र मनमाने समय का समर्थन नहीं करता है।
जेएस में समय सीमा के साथ, सब कुछ वास्तव में खराब है - भाषा में ऐसा कुछ भी नहीं है। यदि आप अच्छा करना चाहते हैं, तो स्वयं करें।

क्या करें
  • विकल्प 1।
    एक मनमाना समय क्षेत्र का उपयोग न करें। पसंदीदा विकल्प और, शायद, सबसे दर्द रहित। यही है, आपके पास केवल स्थानीय समय क्षेत्र और यूटीसी है। इन मामलों के लिए, सभी ब्राउज़रों के पास सब कुछ है, यद्यपि बहुत सुविधाजनक नहीं है। इसके अलावा, समय क्षेत्र ओएस के लिए विश्व स्तर पर सेट किया गया है और यह एक विशिष्ट वेब अनुप्रयोग के लिए इसे बदलने के लिए कोषेर नहीं है।
  • विकल्प 2।
    यदि मनमाने समय क्षेत्रों की आवश्यकता है, तो एक समय टिकट का उपयोग न करें। पूर्ण रूप से। समय बैंक के साथ RFC लाइन में बचत बैंक में रखें। मुझे यकीन नहीं है कि अगर यह क्रॉस-ब्राउज़र समझ में टाइमज़ोन पारियों को हराने में मदद करेगा, लेकिन कम से कम क्रोम को ऐसी पारियों के बारे में पता है।
  • विकल्प 3।
    स्थिति अलग है और ऐसा होता है कि किसी भी उपकरण से डेटाबेस में समय दर्ज किया जाता है। यानी टाइम स्टैम्प के रूप में। चलाने के लिए कहीं नहीं है, समय को सही ढंग से प्रदर्शित करने के लिए, आपको डिवाइस के समय क्षेत्र, या उपयोगकर्ता के समय क्षेत्र, या दोनों को जानने की आवश्यकता है, और सभी पारियों को हाथ से गणना करें। आप ओल्सन के आधार के उपयोग के बिना नहीं कर सकते।
  • इस कल्पित कहानी का नैतिक होना चाहिए, लेकिन मेरे पास जोड़ने के लिए और कुछ नहीं है। मुझे ECMA मानक के ड्राफ्ट में कोई प्रगति नहीं दिख रही है, शायद कोई भी नहीं होगा।

इस पाठ में, हम जावास्क्रिप्ट तिथि वस्तु को पेश करेंगे और व्यवहार में इसका उपयोग करना सीखेंगे।

तिथि निर्माण - 4 उदाहरण

जावास्क्रिप्ट में, दिनांक का निर्माण दिनांक ऑब्जेक्ट का उपयोग करके किया जाता है। दिनांक ऑब्जेक्ट समय अक्ष पर एक बिंदु का प्रतिनिधित्व करता है और मिलीसेकंड परिशुद्धता के साथ दिनांक और समय को संग्रहीत करने के लिए डिज़ाइन किया गया है।

जावास्क्रिप्ट में एक तिथि बनाने के उदाहरण।

1. वर्तमान तिथि और समय का निर्माण।

जावास्क्रिप्ट में वर्तमान तिथि और समय प्राप्त करें किसी दिनांक ऑब्जेक्ट को तात्कालिक करके मापदंडों को निर्दिष्ट किए बिना:

// वर्तमान तिथि (वह तिथि और समय जो उस समय उपयोगकर्ता के स्थानीय कंप्यूटर पर दिनांक ऑब्जेक्ट का एक उदाहरण बनाने के लिए था) var अब \u003d new Date (); // उदाहरण के लिए, वर्तमान तिथि को कंसोल कंसोल पर प्रिंट करें। अब (अब);

यदि आपको स्ट्रिंग प्रारूप में केवल आज की तारीख प्राप्त करने की आवश्यकता है, तो आप toLocaleDateString विधि का उपयोग कर सकते हैं:

वार अब \u003d नई तिथि ()। ToLocaleDateString (); // 19.12.2019

उपयोगकर्ता का वर्तमान समय इस तरह प्राप्त किया जा सकता है:

वार अब \u003d नई तिथि ()। ToLocaleTimeString (); // 11:02:48 संस्करण अब \u003d नई तिथि ()। ToLocaleTimeString ()। स्लाइस (0, -3); // 11:02

स्ट्रिंग प्रारूप में दिनांक और समय निम्नानुसार प्राप्त किया जा सकता है:

वार अब \u003d नई तिथि ()। ToLocaleString (); // 19.12.2019, 11:02:48

2. 1 जनवरी, 1970 00:00:00 UTC के बाद से दिनांक ऑब्जेक्ट को मिलीसेकंड की संख्या निर्दिष्ट करके दिनांक का निर्माण।

// 1 वर्ष (उच्च गति नहीं) \u003d 365 * 24 * 60 * 60 * 1000 \u003d 31536000000 एमएस //, उदाहरण के लिए, चलो दिनांक 01/01/1971, 00:00:00 यूटीसी बनाएं: var date1 \u003d new Date (31536000000);

3. इसे डेट ऑब्जेक्ट के लिए एक स्ट्रिंग के रूप में निर्दिष्ट करके एक तारीख बनाएं।

दिनांक बनाने के लिए इस विकल्प के साथ, जावास्क्रिप्ट इसे पास की गई स्ट्रिंग को समझने और इसके आधार पर एक तारीख बनाने की कोशिश करेगी। जावास्क्रिप्ट में एक तारीख को स्ट्रिंग परिवर्तित करना Date.parse विधि का उपयोग करके किया जाता है।

उदाहरण के लिए:

// DD.MM.YY प्रारूप में एक स्ट्रिंग के आधार पर एक तारीख बनाएं var date1 \u003d new Date ("05.11.19"); // प्रारूप YYYY-MM-DDThh में स्ट्रिंग के आधार पर एक तिथि बनाएँ: mm: ss.sss (T का उपयोग तिथि और समय को अलग करने के लिए किया जाता है) var date2 \u003d new Date ("2015-02-24T21: 23"); // समय क्षेत्र (प्रारूप YYYY-MM-DDThh: mm: ss.sss s. hh: mm) का संकेत करने वाली स्ट्रिंग के आधार पर एक तिथि बनाएँ: var date3 \u003d new Date ("2015-02-24T22: 02: 03: 00") ;

4. निम्नलिखित मापदंडों को निर्दिष्ट करके एक तिथि बनाना, अल्पविराम द्वारा अलग किया गया: वर्ष (4 अंक), महीना (0 से गिनती), दिन (1..31), घंटे (0..23), मिनट (0..59), सेकंड (0..59), मिलीसेकंड (0)। .999)। इसके अलावा, केवल पहले दो मापदंडों की आवश्यकता है।

केवल आवश्यक मापदंडों के साथ एक तिथि बनाने का एक उदाहरण:

// दिनांक 01.01.2015 बनाएं (अनिर्दिष्ट पैरामीटर डिफ़ॉल्ट रूप से समान हैं: संख्या - 01, घंटे - 00, मिनट - 00, सेकंड - 00, मिलीसेकंड - 000)। var date1 \u003d नई तिथि (2015.01); // दिनांक 01.24.2015, 21:23 var date2 \u003d नई तिथि (2015,01,24,21,23) बनाएँ;

नोट: यदि आपको UTC में दिनांक और समय निर्धारित करने की आवश्यकता है, तो आप Date.UTC विधि का उपयोग कर सकते हैं।

// 1 उदाहरण var date1 \u003d Date.UTC (2015,1,1); var date2 \u003d नई तारीख (तारीख 1); चेतावनी (date2.toUTCString ()); // दूसरा उदाहरण var newDate \u003d new Date (Date.UTC (2015,1,1)); चेतावनी (newDate.toUTCString ());

व्यक्तिगत तिथि और समय घटकों को पुनः प्राप्त करना

जावास्क्रिप्ट व्यक्तिगत तिथि और समय घटकों को प्राप्त करने के लिए निम्नलिखित विधियों का उपयोग करता है:

  • getFullYear () - 4-अंकों वाला वर्ष लौटाता है;
  • getMonth () - महीने को 0 से 11 तक संख्या के प्रारूप में लौटाता है (0 - जनवरी, 1 - फरवरी, 2 - मार्च, ..., 11 - दिसंबर);
  • getDate () - महीने का दिन 1 से 31 तक देता है;
  • getHours () - 0 से 23 तक घंटों की संख्या लौटाता है;
  • getMinutes () - 0 से 59 मिनट की संख्या लौटाता है;
  • getSeconds () - 0 से 59 तक सेकंड की संख्या लौटाता है;
  • getMilliseconds () - 0 से 999 तक मिलीसेकंड की संख्या लौटाता है।

ये सभी विधियाँ उपयोगकर्ता के स्थानीय उपकरण पर निर्धारित समय क्षेत्र के अनुसार अलग-अलग दिनांक और समय घटक लौटाती हैं।

// दिनांक 11/11/2019 00:00 UTC var newDate \u003d नई तिथि (Date.UTC (2019,11,11)) बनाएँ; // तिथि घटक प्राप्त करें यदि उपयोगकर्ता के डिवाइस पर स्थानीय समय UTC + 10: 00 newDate.getFullYear () है; // 2019 newDate.getMonth (); // 10 newDate.getDate (); // 11 newDate.getHours (); // 10 newDate.getMinutes (); // 0 newDate.getSeconds (); // 0 newDate.getMilliseconds (); // 0

एक उदाहरण जिसमें हम उपयोगकर्ता को इस बात पर निर्भर करेंगे कि वह वर्तमान में किस समय अंतराल पर निर्भर करता है:

// उपयोगकर्ता के वर्तमान समय और इस समय के घटकों को अभी प्राप्त करें var \u003d नया दिनांक (), घंटा \u003d now.getHours (), मिनट \u003d now.getMinutes (), दूसरा \u003d now.getSeconds (), संदेश \u003d ""; // एक अभिभाषण वाक्यांश को उपयोगकर्ता के स्थानीय समय के आधार पर परिभाषित करें यदि (घंटा)<= 6) { message = "Доброе время суток"; } else if (hour <= 12) { message = "Доброе утро"; } else if (hour <= 18) { message = "Добрый день"; } else { message = "Добрый вечер"; } // выполним форматирование времени с использованием тернарного оператора minute = (minute < 10) ? "0" + minute: minute; second = (second < 10) ? "0" + second: second; hour = (hour < 10) ? "0" + hour: hour; message += ", сейчас " + hour + ":" + minute + ":" + second; // выведем приветствие и время в консоль console.log(message); // Добрый вечер, сейчас 22:50:39

इस उदाहरण में, समय को टेनेरी ऑपरेटर का उपयोग करके वांछित प्रारूप में प्रदर्शित किया जाता है।

UTC + 0 समय क्षेत्र के लिए अलग-अलग दिनांक और समय घटक प्राप्त करने के लिए जावास्क्रिप्ट में इन विधियों के लिए एनालॉग हैं। इन विधियों को समान रूप से नामित किया गया है, लेकिन "get" के बाद जोड़े गए "UTC" के साथ: getUTCFullYear (), getUTCMonth (), getUTCDate (), getUTCHours (), getUTCMatutes (), getUTCSeconds (), getMilliseconds ()।

आप getDay () पद्धति का उपयोग करके जावास्क्रिप्ट में सप्ताह का दिन प्राप्त कर सकते हैं।

यह विधि 0 से 6 (0 - रविवार, 1 - सोमवार, ..., 6 - शनिवार) से एक नंबर लौटाती है।

एक उदाहरण जिसमें हम सप्ताह के दिन को संख्यात्मक से स्ट्रिंग प्रतिनिधित्व में परिवर्तित करते हैं:

वार दिन \u003d ["रविवार", "सोमवार", "मंगलवार", "बुधवार", "गुरुवार", "शुक्रवार", "शनिवार"]; // वर्तमान तिथि संस्करण प्राप्त करें \u003d नई तिथि (); // सप्ताह के दिन को कंसोल कंसोल पर प्रिंट करें। ("आज" + दिन);

आप जावास्क्रिप्ट में 01/01/1970 00:00:00 UTC के बाद से प्राप्त मिलीसेकंड की संख्या प्राप्त कर सकते हैं।

आप GetTimezoneOffset () विधि का उपयोग करके जावास्क्रिप्ट में स्थानीय डिवाइस टाइम ज़ोन और UTC के बीच अंतर (मिनटों में) का पता लगा सकते हैं।

व्यक्तिगत दिनांक और समय घटकों को सेट करना

जावास्क्रिप्ट में, आप दिनांक ऑब्जेक्ट पर निम्न विधियों का उपयोग करके व्यक्तिगत दिनांक और समय घटक सेट कर सकते हैं:

  • setFullYear (वर्ष [, माह, तिथि]) - वर्ष की स्थापना (इसके अलावा, आप एक और महीना और दिन निर्धारित कर सकते हैं);
  • setMonth (महीना [, तारीख]) - महीने को 0 से 11 तक सेट करना (0 - जनवरी, 1 - फरवरी, 2 - मार्च, ..., 11 - दिसंबर); इसके अतिरिक्त, यह विधि आपको संख्या निर्धारित करने की भी अनुमति देती है;
  • setDate (तारीख) - नंबर सेट करना;
  • सेटहॉर्स (घंटे [, मिनट, सेकंड, एमएस]) - 0 से 23 तक घंटे सेट करता है (आप इसके अलावा मिनट, सेकंड और मिलीसेकंड सेट कर सकते हैं);
  • setMinutes (मिनट [,) - 0 से 59 मिनट सेट (आप अतिरिक्त सेकंड और मिलीसेकंड सेट कर सकते हैं);
  • सेटसेकंड (सेकंड) - 0 से 59 सेकंड सेट करता है (आप इसके अलावा अधिक मिलीसेकंड सेट कर सकते हैं);
  • setMilliseconds (ms) - मिलीसेकंड (0 से 999) सेट करता है।

ये सभी तरीके उपयोगकर्ता के कंप्यूटर पर निर्धारित समय क्षेत्र में दिनांक और समय निर्धारित करने के लिए डिज़ाइन किए गए हैं।

// वर्तमान दिनांक var newDate \u003d नई दिनांक () युक्त दिनांक ऑब्जेक्ट का एक उदाहरण बनाएँ; // वर्ष newDate.setFullYear (2019) सेट करें; // वर्ष और महीने को सेट करें newDate.setFullYear (2019, 08); // सेट 20.09.2019 newDate.setFullYear (2019, 08, 20); // महीना नया सेट करें ।सेटमार्ट (05); // महीने और दिन को सेट करें newDate.setMonth (05, 15); // नंबर सेट करें newDate.setDate (28); // घंटे सेट करें newDate.setHours (13); // सेट करें घंटे और मिनट newDate.setHours (13,20);

जावास्क्रिप्ट में, UTC + 0 टाइम ज़ोन में दिनांक और समय निर्धारित करने के लिए निम्न विधियों का उपयोग किया जाता है: setUTCFullYear (), setUTCMonth (), setUTCDate (), setUTCHours (), setUTCSMinutes (), setUTCSecondes (), setUTCMilliseconds ()।

01/01/1970 00:00:00 UTC के बाद से मिलीसेकंड की संख्या का उपयोग करके दिनांक और समय निर्धारित करना, और फिर setTime () का उपयोग किया जाता है।

इसके अलावा, जावास्क्रिप्ट में, गलत तारीख और समय घटकों को निर्दिष्ट करने से त्रुटियां नहीं होती हैं, वे बस स्वचालित रूप से बाकी के बीच वितरित होते हैं।

उदाहरण के लिए:

// नंबर 44 इस प्रकार वितरित किया जाएगा: 44 - 31 \u003d 13, 13 फरवरी 2019 newDate.setFullYear (2019, 01, 44);

इस तकनीक का उपयोग तब किया जा सकता है जब आपको एक निश्चित तिथि प्राप्त करने की आवश्यकता होती है जो एक निश्चित अवधि के लिए दी गई हो।

// दिनांक जो कि 7 दिनों से अधिक होगी newDate newDate.setDate (date1.getDate () + 7); // दिनांक जो नएडेट newDate.setSeconds (date1.getSeconds () - 120) से 120 सेकंड कम होगी; // इस तरह आप newDate के लिए पिछले महीने के अंतिम दिन को सेट कर सकते हैं ।सेटसेट (0);

दिनांक को स्ट्रिंग में परिवर्तित करना और उसे प्रारूपित करना

जावास्क्रिप्ट में, तारीख को स्ट्रिंग में बदलने के तरीकों को 2 समूहों में विभाजित किया जा सकता है।

पहले समूह में वे तरीके शामिल हैं जो इसे ब्राउज़र में परिभाषित करते हैं: toString (), toDateString (), toTimeString (), toUTCString ()।

TheString () विधि पूर्ण तिथि प्रतिनिधित्व लौटाती है, toDateString () - केवल तारीख, toTimeString () - केवल समय, toUTCString () - पूर्ण तिथि प्रतिनिधित्व, लेकिन UTC + 0 समय क्षेत्र में।

इसलिये स्ट्रिंग विधियाँ जो इन विधियों को वापस करना चाहिए, मानक में स्पष्ट रूप से परिभाषित नहीं हैं, वे विभिन्न ब्राउज़रों में भिन्न हो सकती हैं।

दूसरे समूह को तरीकों को स्थानीय कंप्यूटर के समय क्षेत्र और भाषा को ध्यान में रखते हुए वर्गीकृत किया जा सकता है: toLocaleString () - दिनांक और समय, toLocaleDateString () - केवल दिनांक, toLocaleTimeString () - केवल समय।

TolocaleString (), toLocaleDateString (), toLocaleTimeString () विधियों में 2 वैकल्पिक पैरामीटर हैं। पहला पैरामीटर स्पष्ट रूप से स्थान को निर्दिष्ट करने के लिए है, दूसरा स्वरूपण विकल्पों को निर्दिष्ट करने के लिए है।

यदि लोकेल स्पष्ट रूप से सेट नहीं किया गया है या अपरिभाषित नहीं है, तो ब्राउज़र डिफ़ॉल्ट रूप से उसी को लेता है।

इसके अलावा, जावास्क्रिप्ट में एक toISOString () विधि भी है। यह ISO प्रारूप (YYYY-MM-DDTHH: mm: ss.sssZ) में दिनांक और समय युक्त एक स्ट्रिंग देता है।

// दिनांक बनाएं 04/15/2019 18:43:59 (उपयोगकर्ता के समय क्षेत्र में) var newDate \u003d नई तिथि (2019, 03, 15, 18, 43, 59); कंसोल.लॉग (newDate.toString ()); // मोन अप्रैल 15 2019 18:43:59 GMT + 1000 (व्लादिवोस्तोक मानक समय) कंसोल.लॉग (newDate.toDateString ()); // मोन अप्रैल 15 2019 कंसोल.लॉग (newDate.toTimeString ()); // 18:43:59 GMT + 1000 (व्लादिवोस्तोक, मानक समय) कंसोल.लॉग (newDate.toLocaleString ()); // 04/15/2019, 18:43:59 कंसोल.लॉग (newDate.toLocaleDateString ()); // 04/15/2019 कंसोल.लॉग (newDate.toLocaleTimeString ()); // 18:43:59 कंसोल.लॉग (newDate.toUTCString ()); // सोम, 15 अप्रैल 2019 08:43:59 GMT कंसोल.लॉग (newDate.toISOString ()); // 2019-04-15T08: 43: 59.000Z

स्ट्रिंग को तिथि में बदलने की विधि

किसी स्ट्रिंग को डेट में बदलने के लिए जावास्क्रिप्ट Date.parse () विधि का उपयोग करता है। यदि यह RFC2822 या ISO 8601 अनुरूप है तो यह विधि एक स्ट्रिंग को रूपांतरित कर सकती है।

इस पाठ में, आईएसओ 8601 मानक पर विचार करें, जिसके लिए निम्न प्रारूप में स्ट्रिंग की आवश्यकता होती है: YYYY-MM-DDThh: mm: ss.sssZ।

  • YYYY - 4-अंक वर्ष;
  • एमएम - 2-अंक महीने (01 \u003d जनवरी, 02 \u003d फरवरी, आदि);
  • डीडी - महीने का दिन, जिसमें 2 अंक (01..31) शामिल हैं;
  • टी - तिथि और समय को अलग करने के लिए चरित्र;
  • hh - घंटे की संख्या (00..23);
  • मिमी - मिनट की संख्या (00..59);
  • ss - सेकंड की संख्या (00..59);
  • sss - मिलीसेकंड की संख्या (0..999);
  • Z एक ऐसा चरित्र है जिसका अर्थ है कि समय UTC प्रारूप में निर्दिष्ट है। यदि आपको यूटीसी के बजाय समय क्षेत्र निर्धारित करने की आवश्यकता है, तो "जेड" अक्षर को मूल्य + hh: mm या -hh.mm से प्रतिस्थापित किया जाना चाहिए।

यदि दिनांक और समय वाला स्ट्रिंग RFC2822 या ISO 8601 प्रारूप में नहीं है, तो JavaScript Date.parse () विधि अभी भी इसे परिवर्तित कर सकती है, लेकिन इस मामले में परिणाम अप्रत्याशित हो सकता है।

हैलो!
मुझे अक्सर सांख्यिकीय आंकड़ों के साथ काम करना पड़ता है और इसमें बहुत सारी तारीखें जुड़ी होती हैं। इसके अलावा, एक ही तारीख को विभिन्न प्रारूपों में पृष्ठ पर उपयोग किया जा सकता है (उदाहरण के लिए, कार के लिए सुविधाजनक और किसी व्यक्ति के लिए सुविधाजनक)। मुझे लगता है कि आप में से अधिकांश इस सभी भयावह कोड के बारे में पूरी तरह से जानते हैं जो एक तिथि वस्तु का उपयोग करने के साथ आता है।
उदाहरण के लिए, DD.MM.YYY प्रारूप में वर्तमान तिथि प्राप्त करने के लिए हमें निम्नलिखित करने की आवश्यकता है:
var d \u003d new Date (), fd \u003d d.getDate () + "।" + (d.getMonth () + 1) + "।" + d.getFullYear ();
और जब ऐसी कई लाइनें हैं? क्या यह याद रखना आसान है कि जावास्क्रिप्ट में एक महीना खरोंच से शुरू होता है जब आप न केवल उसमें विकसित होते हैं? या तथ्य यह है कि वहाँ बैकिस पर लगभग हर जगह की तरह, मिसे सेकंड नहीं हैं? आप लोकप्रिय Moment.js लाइब्रेरी के साथ कुछ समस्याओं को हल कर सकते हैं, लेकिन यह बहुत धीरे-धीरे काम करता है।
प्रश्न में पुस्तकालय इन समस्याओं को हल करता है।
यदि दिलचस्पी है, तो मेरा सुझाव है कि आप इस छोटी समीक्षा को पढ़ें।

TempusJS डेट ऑब्जेक्ट पर बहुत अधिक मात्रा में चीनी है, इसलिए यह बहुत तेज़ है। पुस्तकालय का वाक्य-विन्यास अपने आप में काफी सरल है। उदाहरण के लिए, आप पिछले उदाहरण को इस तरह लिख सकते हैं:
var fd \u003d tempus ()। format ("% d।% m।% Y");
अब गति के बारे में। स्पॉइलर में, आप टेंपस की तुलना मोमेंट के साथ देख सकते हैं और मूल दिनांक प्रारूप (ऊपर देखें):

देशी JS, MomentJS और TempusJS की तुलना

हमें वर्तमान तिथि मिलती है
नेटिव जेएस x 2,175,575 ऑप्स / सेकंड 96 0.75% (96 रन सैंपल) मोमेंट एक्स 284,864 ऑप्स / सेक 1 0.85% (96 रन सैंपल) टेम्प्स x 2,086,081 ऑप्स / सेकंड ± 0.73% (97 रन सैंपल)
का प्रारूपण
देशी JS x 1,637,517 ops / sec% 0.61% (100 रन सैंपल) Moment x 8.808 ops / sec 6 1.07% (100 रन सैंपल) Tempus x 942,815 op (सेकंड) ± 0.68% (94 रन सैंपल)
दिनांक ऑटोडेटेक्शन और पार्सिंग
देशी JS x 11,204,316 op / sec% 0.81% (88 रन सैंपल) Moment x 38,511 ops / sec, 1.41% (95 रन सैंपल) Tempus x 93,973 ops / सेकंड: ± 1.06% (85 रन नमूना)
प्रारूप द्वारा एक तारीख पार्सिंग
मोमेंट x 46.293 ऑप्स / सेकंड (0.63% (100 रन सैंपल) टेम्प्स x 109.947 ऑप्स / सेक s 0.93% (99 रन सैंपल)
पार्सिंग और सत्यापन
मोमेंट x 44.588 ऑप्स / सेकंड% 1.09% (90 रन सैंपल) टेम्प्स x 103.439 ऑप्स / सेक s 0.90% (94 रन सैंपल)
Google Chrome में मेरे लैपटॉप पर परिणाम 30.0.1599.114 प्राप्त हुए थे। अन्य ब्राउज़रों में, परिणाम भिन्न होते हैं, लेकिन अनुपात लगभग समान रहता है।
बेंचमार्क.जैस लाइब्रेरी का उपयोग परीक्षणों के लिए किया गया था
अन्य सुविधाओं के लिए बेंचमार्क, आप देख सकते हैं।

तो, इस पुस्तकालय के फायदे इस प्रकार लिखे जा सकते हैं:

  • IE6 +, क्रोम, फ़ायरफ़ॉक्स, ओपेरा का समर्थन करता है;
  • कॉल चेन का समर्थन करता है;
  • महीने शून्य के बजाय 1 (डिफ़ॉल्ट) से शुरू हो सकते हैं;
  • मिलीसेकंड को अक्षम (डिफ़ॉल्ट) या सक्षम किया जा सकता है;
  • तेजी से काम (चूंकि, कई मामलों में, ब्राउज़र देशी दिनांक ऑब्जेक्ट का उपयोग किया जाता है, जिसके कार्यान्वयन को तेज भाषाओं में लिखा गया है);
  • कस्टम स्वरूपों और प्लगइन्स का समर्थन करता है
  • दिनांक सत्यापन बहुत तेज़ है और केवल उन कार्यों पर निर्भर करता है जो तिथि निर्धारित करते हैं (क्योंकि सत्यापन पहले से ही होता है जब मूल्यों को दर्ज किया जाता है, और अलग से गणना नहीं की जाती है);
  • उपयोगकर्ता की भाषा का बहुभाषीपन और स्वायत्तता।

यहां हम केवल कुछ कार्यों के बारे में बात करेंगे।

स्वरूपण और पार्सिंग

तो, शुरुआत के लिए, दिनांक स्वरूपण का एक और उदाहरण। हम यहां कॉल चाइनिंग का भी उपयोग करते हैं। प्रत्येक सेटिंग के अंत में, हम एक TempusDate ऑब्जेक्ट वापस प्राप्त करते हैं जिसे हम श्रृंखला के नीचे उपयोग कर सकते हैं। उदाहरण:
tempus ()। // नई तिथि कैल्क प्राप्त करें ((माह: -1))। // इसे एक महीने के प्रारूप में घटाएं ("% d।% m।% Y"); // एक स्ट्रिंग के रूप में आउटपुट
इस प्रकार, हम एक ही दिन, घंटा और दूसरा प्राप्त करते हैं, लेकिन एक महीने पहले। यह पिछले महीने की रिपोर्ट प्राप्त करने के लिए उपयोगी है।

अगला उदाहरण डेट को पार्स करना है।
// "2013-11-18" टेंपस ("11/18/2013") दिनांक के साथ एक टेंपसैट वस्तु लौटाता है; // "2013-12-12" टेंपस ("2013-12-12", "% Y-% m-% d")) दिनांक के साथ एक TempusDate ऑब्जेक्ट लौटाता है);
Tempus स्वचालित रूप से कुछ ज्ञात स्वरूपों का पता लगा सकता है। इसके अलावा, आप एक निश्चित प्रारूप निर्दिष्ट कर सकते हैं, फिर पार्सिंग तेज हो जाएगी। इसके अलावा, आप उस तारीख को सेट कर सकते हैं जिसे पार्सिंग विफल होने पर वापस कर दिया जाएगा:
// इसलिये "123" प्रारूप "% d।% M.% Y" से मेल नहीं खाता है, तो // एक ऑब्जेक्ट जिसमें दिनांक 2013-01-01 टेम्पस ("123", "% d।% M.% Y", tempus है। ());
डिफ़ॉल्ट स्वरूपों की सूची देखी जा सकती है

अब पहले से प्रारूपित तिथि के प्रारूप को बदलते हैं
// "2013-11-05" टेम्पस ("05.11.2013")। प्रारूप ("% Y-% m-% d"); // या तो // "अक्टूबर, 12" टेम्पस ("2013-10-12 12:31:01", "% Y-% m-% d% H:% M:% S")। प्रारूप ("%" बी,% डी ");

इसके अलावा, आप स्वरूपण के लिए स्थानीयकरण का उपयोग कर सकते हैं। डिफ़ॉल्ट रूप से, उपयोगकर्ता की भाषा (ब्राउज़र से ली गई) या डिफ़ॉल्ट भाषा चुनी जाएगी यदि उपयोगकर्ता की भाषा उपलब्ध टेंपरेरी भाषाओं में से नहीं मिली है।
// भाषा सेट करें tempus.lang ("आरयू"); // डिफ़ॉल्ट रूप से हम प्रारूप का उपयोग करते हैं // "05 नवंबर" टेम्पस (1383609600) ।फॉर्मैट ("% बी,%" ");
फिलहाल केवल दो भाषाएं हैं - रूसी और अंग्रेजी, इसलिए मुझे मदद करने में खुशी होगी।

मान्यकरण

दिनांक सत्यापन इस प्रकार है:
// गलत टेंपस लौटाता है ("08/32/2013", "% d।% M.% Y")) मान्य (); // लौटाता है असली टेम्पू ("00:00 01.01.2012", "% H:% M% d।% M. Y Y")) मान्य ();

एक त्रुटि के मामले में, आप उन क्षेत्रों को देख सकते हैं जिनमें यह हुआ था - जहां भी मूल्य गलत नहीं है:
// रिटर्न ("वर्ष": - 5, "महीना": गलत, "दिन": गलत, "घंटे": झूठ, // "मिनट": गलत, "सेकंड": गलत, "मिलीसेकंड": गलत) टेम्प ()। वर्ष (-5)। // वर्ष \u003d -5, अर्थात् सेट करें अमान्य त्रुटियाँ (); // त्रुटियों के साथ वस्तु प्राप्त करें

तिथि सीमा

कभी-कभी हमें वर्षों की संख्या (उदाहरण के लिए, आयु), महीने, दिन आदि प्राप्त करने की आवश्यकता होती है। दो तिथियों के बीच। ऐसा करने के लिए, हम बीच की पद्धति का उपयोग कर सकते हैं, जो वांछित प्रारूप ("वर्ष", "महीना", "दिन", "घंटे", "मिनट", "सेकंड", "मिलीसेकंड") में दो तिथियों और रिटर्न के बीच अंतर पाता है।
यहां 1 नवंबर, 2013 और 5 मई, 2014 के बीच महीनों की संख्या प्राप्त करने का एक सरल उदाहरण दिया गया है:
// 6 टेंपस लौटाता है ()। बीच (टेंपस) ("माह");
या नए साल तक कितने घंटे बचे हैं
tempus ()। बीच में (tempus (), "घंटे");
पिछले उदाहरण में, आप देख सकते हैं कि मैंने केवल वर्ष निर्दिष्ट किया है। किसी ऐरे या ऑब्जेक्ट पर मान सेट करते समय, लापता मान होगा
न्यूनतम के साथ भरा। आप प्रलेखन में न्यूनतम मूल्यों के साथ स्थिरांक की सूची देख सकते हैं।

इसके अलावा, हम कैल्क फ़ंक्शन का उपयोग करके किसी भी तारीख को बदल सकते हैं:
// दिनांक 2012-01-01 टेंपस के साथ एक टेंपसैट लौटाता है ()। Calc (वर्ष: 1, माह: -4, दिन: -1));

कस्टम प्रारूप

हम महीने के लिए अपना स्वयं का प्रारूप लागू करते हैं, जो 1 से 12 तक मान ले सकता है (01 से 12 नहीं):
// एक नया प्रारूप दर्ज करें tempus.registerFormat ("% q", // निर्देश -% q फ़ंक्शन (दिनांक) (// यहां हम प्रारूपण फ़ंक्शन को निर्दिष्ट करते हैं, अर्थात% q रिटर्न date.month () के लिए क्या प्रतिस्थापित किया जाएगा); , फ़ंक्शन (मान) (// और यहां पार्सिंग फ़ंक्शन var v \u003d संख्या (मान) है; वापसी (महीने: (isNaN (v); अपरिभाषित: v));), 1, // न्यूनतम लंबाई जो मान 2 ले सकती है , // अधिकतम लंबाई "संख्या" // प्रकार); // परीक्षण // रिटर्न "01.1.2013"; टेम्पस ((वर्ष: 2013, माह: 1, दिन: 1))। प्रारूप ("% d।% q।% Y"); // रिटर्न ("वर्ष": 2013, "महीना": 2, "दिन": 10, "घंटे": 0, "मिनट": 0, "सेकंड": 0); अस्थायी ("10.2.2013", "% d।% q।% Y")। get ();
पंजीकरण करते समय, आप देखेंगे कि कुछ मापदंडों को अलग से निर्दिष्ट किया गया है, जबकि एक नियमित अभिव्यक्ति का उपयोग किया जा सकता है। वास्तव में, शुरू में यह वहां था, लेकिन इसे छोड़ने के बाद, गति कई दर्जन गुना बढ़ गई।
यदि आपको कुछ प्रारूप निकालने की आवश्यकता है, तो unregisterFormat का उपयोग करें:
tempus.unregisterFormat ("% d"); // "% d.01.2013" लौटाता है, क्योंकि निर्देश% d अब मौजूद नहीं है। tempus.format ((वर्ष: 2013, माह: 1, दिन: 1), "% d।% m।% Y");

गेटर्स / सेटर्स

आप फ़ंक्शंस वर्ष (), महीना (), दिन (), घंटे (), सेकंड (), मिलीसेकंड (), dayOfWeek (), utc (), टाइमस्टैम्प () या सेट का उपयोग करके कुछ मान प्राप्त / सेट कर सकते हैं ()। उदाहरण के लिए:
tempus ()। // वर्तमान तिथि वर्ष (1900) प्राप्त करें। // इसे छोड़ दें जैसा कि यह है, लेकिन इसे 1900 लीपियर () पर सेट करें; // जांचें कि क्या यह एक लीप ईयर है, इस मामले में गलत टेंपस ()। वर्ष (); // और इस तरह हम संख्यात्मक रूप में चालू वर्ष प्राप्त करते हैं

खजूर पैदा करना

आप कई तरीकों से एक तारीख उत्पन्न कर सकते हैं, मापदंडों की पूरी सूची प्रलेखन में है। यहाँ एक न्यूनतम उदाहरण है।
// रिटर्न ["03/29/2013", "03/30/2013", "03/31/2013", "04/01/2013", "04/02/2013"]; tempus.generate ((dateFrom: "20130329", formatFrom: "% Y.% m।% d", dateTo: "20130402", अवधि: (दिन: 1), प्रारूप: "% d।% m।% Y" ));
यह बैकएंड के अनुरोध के बिना, चार्ट को प्रदर्शित करने और क्लाइंट पर सीधे प्रदर्शन प्रारूप को बदलने के लिए उपयोगी हो सकता है। दिनांक को एक सरणी के रूप में या वस्तुओं के रूप में उत्पन्न किया जा सकता है, जहां तिथियां स्वयं कुंजियों के रूप में होंगी (यह तब उपयोगी है जब हमें किसी घटना को किसी तिथि पर बांधने की आवश्यकता होती है, उदाहरण के लिए, जब हम अपना कैलेंडर बना रहे हों)। इसके अलावा, तिथियां दिन, सप्ताह, महीने, घंटे, वर्ष - जो भी हों, द्वारा समूहीकृत की जा सकती हैं। इसे कैलेंडर में भी लागू किया जा सकता है।

प्लगइन्स

और अंतिम लेकिन कम से कम, प्लगइन्स नहीं। यहां हम एक यादृच्छिक तारीख उत्पन्न करने के लिए कारखाने का विस्तार कर रहे हैं। इसके अलावा, हमें टेंपसड क्लास की जरूरत है, जो कि टेम्पपस.क्लासेस () में पाया जा सकता है। यहाँ एक उदाहरण प्लगइन है:
(function (tempus) (var TempusDate \u003d tempus.classes ("Tempusate"); tempus.randomDate \u003d function () (var date \u003d new TempusDate) (; date.year (Math.floor ((Math.random)) () *) tempus.MAX_YEAR - tempus.MIN_YEAR)) + tempus.MIN_YEAR))। महीना (Math.floor ((Math.random () * (tempus.MAX_MONTH - tempus.MIN_MONTH)) + tempus.MIN_MONTH) दिन दिवस है। मंजिल (Math.random () * (date.dayCount () - tempus.MIN_DAY)) + tempus.MIN_DAY)) घंटे (Math.floor ((Math.random ()) * (tempus.MAX_HOURS - tempus.MIN_HOURS)। ) + tempus.MIN_HOURS))। मिनट (Math.floor ((Math.random)) (tempus.MAX_MINUTES - tempus.MIN_MINUTES)) + temusus.MIN_MINUTES) सेकंड। (Math.floor ((Math.random)) * (tempus.MAX_SECONDS - tempus.MIN_SECONDS)) + tempus.MIN_SECONDS)); वापसी की तारीख;);)) (tempus); // अब हम तारीखें बना सकते हैं जैसे कि var someRandomDate \u003d tempus.randomDate ();
मुझे लगता है कि इस तरह से jQuery + Tempus, Angular + Tempus, आदि का एक गुच्छा का उपयोग करके विजेट्स को आसानी से लिखना संभव होगा।

स्रोत कोड

आप github से स्रोतों को डाउनलोड करके स्थापित कर सकते हैं:
https://github.com/crusat/tempus-js/releases
या बोवर के माध्यम से:
$ बोवर टेंपस इंस्टॉल करें
आपको केवल एक फ़ाइल की आवश्यकता है - tempus.js या tempus.min.js।

मुझे आशा है कि यह पुस्तकालय उपयोगी होगा, और यह जानना भी दिलचस्प होगा कि पुस्तकालय को सही दिशा में आगे बढ़ाने के लिए इसमें क्या कमी है। ध्यान देने के लिए आपको धन्यवाद!
अनुलेख आमंत्रित करने के लिए धन्यवाद!

वर्तमान तिथि और समय युक्त एक नई दिनांक ऑब्जेक्ट बनाने के लिए नई तिथि () का उपयोग करें।

ध्यान दें कि तारीख () तर्कों के साथ कॉल करने योग्य, के बराबर है नई तिथि (Date.now) .

एक बार जब आपके पास कोई दिनांक ऑब्जेक्ट होता है, तो आप इसके गुणों को पुनः प्राप्त करने के लिए कई उपलब्ध तरीकों में से किसी का उपयोग कर सकते हैं (उदाहरण के लिए, getFullYear () 4-अंकीय वर्ष प्राप्त करने के लिए)।

निम्नलिखित कुछ सामान्य तरीके हैं।

वर्तमान वर्ष प्राप्त करें

var वर्ष \u003d (नई तिथि ())। getFullYear (); कंसोल.लॉग (वर्ष); // नमूना आउटपुट: 2016

वर्तमान माह प्राप्त करें

var महीना \u003d (नई तिथि ())। getMonth (); कंसोल.लॉग (महीना); // नमूना आउटपुट: 0

ध्यान दें कि 0 \u003d जनवरी। ऐसा इसलिए है क्योंकि महीनों से लेकर 0 इससे पहले 11 इसलिए इंडेक्स में +1 जोड़ना अक्सर वांछनीय होता है।

वर्तमान दिन प्राप्त करें

var day \u003d (new Date ())। getDate (); कंसोल.लॉग (दिन); // नमूना आउटपुट: 31

वर्तमान समय प्राप्त करें

var घंटे \u003d (नई तिथि ())। getHours (); कंसोल.लॉग (घंटे); // नमूना आउटपुट: 10

वर्तमान मिनट प्राप्त करें

var मिनट \u003d (नई तिथि ())। getMinutes (); कंसोल.लॉग (मिनट); // नमूना आउटपुट: 39

वर्तमान सेकंड प्राप्त करें

var सेकंड \u003d (नई तिथि ())। getSeconds (); कंसोल.लॉग (दूसरा); // नमूना आउटपुट: 48

वर्तमान मिलीसेकंड प्राप्त करें

किसी दिनांक ऑब्जेक्ट की आवृत्ति के मिलीसेकंड (0 से 999) प्राप्त करने के लिए, getMilliseconds विधि का उपयोग करें।

Var मिलीसेकंड \u003d (नई तिथि ())। GetMilliseconds (); कंसोल.लॉग (मिलीसेकंड); // आउटपुट: अभी मिलीसेकंड है

वर्तमान समय और दिनांक को मानव-पठनीय स्ट्रिंग में बदलें

var अब \u003d नई तिथि (); // UTC टाइमज़ोन फॉर्मेट में स्ट्रिंग को डेट में कनवर्ट करें: कंसोल.लॉग (अब.toUTCString ()); // आउटपुट: बुध, 21 जून 2017 09:13:01 GMT

स्थैतिक Date.now () विधि 1 जनवरी, 1970 00:00:00 UTC के बाद से मिलीसेकंड की संख्या लौटाती है। किसी दिनांक ऑब्जेक्ट आवृत्ति का उपयोग करके उस समय से मिलीसेकंड की संख्या प्राप्त करने के लिए, इसके गेटटाइम विधि का उपयोग करें।

// मिल कंसोल का उपयोग करते हुए मिलीसेकंड प्राप्त करें अब Date कंसोल.log (Date.now ()); // मिल उदाहरण की विधि getTime का उपयोग करके मिलीसेकंड प्राप्त करें। कंसोल (। (नई तिथि ())। getTime ());