सबसे पहले, मुझे लगता है कि टाइमज़ोन के पास शायद इसके साथ कुछ करना है। मैं ईएसटी/ईडीटी में हूं। इसके अलावा, मैं क्रोमियम 17/लिनक्स पर इसका परीक्षण कर रहा हूं।दिनांक निर्माता: संख्यात्मक तर्क बनाम स्ट्रिंग तर्क कुछ मामलों में अलग-अलग तिथियां दे रहा है
अब मान लें कि मैं दो तिथियों के इस तरह बना सकते हैं:
// December 5
dateFromNumbers = new Date(2020, 11, 5);
dateFromString = new Date("2020-12-5");
यह इन तिथियों लगता समान टाइम स्टांप होना चाहिए, और वे कार्य करें:
+dateFromNumbers == +dateFromString; // true
... कम से कम इस मामले में । लेकिन कुछ मामलों में, वे नहीं करते:
// December 15
dateFromNumbers = new Date(2020, 11, 15);
dateFromString = new Date("2020-12-15");
+dateFromNumbers == +dateFromString; // false
यहां क्या हो रहा है?
dateFromNumbers; // Tue Dec 15 2020 00:00:00 GMT-0500 (EST)
dateFromString; // Mon Dec 14 2020 19:00:00 GMT-0500 (EST)
लगता dateFromString
की तरह 5 घंटे पहले इस मामले में dateFromNumbers
से (ईएसटी जीएमटी है - 5, मुझे यकीन है कि यह किसी भी तरह से संबंधित है हूँ)।
ऐसा लगता है कि अक्टूबर से दिसंबर के अंत में यह प्रभावित होता है। यहां एक पहेली है जो देखना आसान बनाता है कि कौन से दिन अलग-अलग होते हैं (जब तक कि आप लाल-हरे रंग की रंगीन न हों, उस स्थिति में, मेरी माफी माँगना मुश्किल हो सकता है)।
क्या देता है?
नोट्स:
- आप jsfiddle उदाहरण देखने के लिए के रूप में मैं यह दिखाई दे रही है EST/EDT के लिए अपने सिस्टम समय क्षेत्र सेट कर सकते हैं।
- दिनांक का महीना संख्या शून्य-आधारित है;
11
एक टाइपो नहीं है। - यह समस्या हर साल दिखाई देती है जिसे मैंने चेक किया था।
आपकी दूसरी मामला दिनांक 15 नवंबर, 2020 और 15 दिसंबर, 2020 है। क्या यह एक टाइपो है? – Habib
क्रोम चल रहा है 18.0.1025.162 मीटर, विंडोज़, जीएमटी +2: परिणाम पुन: उत्पन्न होते हैं। लेकिन स्पष्ट रूप से स्ट्रिंग प्रस्तुति में समय निर्दिष्ट करने से समस्या हल हो जाती है। मैं आम तौर पर तारों से तिथियों से बचता हूं क्योंकि ब्राउज़र में प्रारूप समर्थन भिन्न और खराब दस्तावेज है, मिलीसेकंड बहुत अधिक विश्वसनीय हैं। – DCoder