2012-09-30 14 views
5

जावास्क्रिप्ट में Date ऑब्जेक्ट के साथ अधिकतम और न्यूनतम तिथि का उपयोग क्या कर सकता है?जावास्क्रिप्ट में किस तारीख की तारीखों की अनुमति है?

क्या प्राचीन ऐतिहासिक तिथियों (जैसे January 1, 2,500 B.C.) या भविष्य में दूर की तारीखों (जैसे October 7, 10,000) का प्रतिनिधित्व करना संभव है?

यदि इन दूर-से-वर्तमान तिथियों को Date ऑब्जेक्ट के साथ प्रदर्शित नहीं किया जा सकता है, तो मुझे उनका प्रतिनिधित्व कैसे करना चाहिए?

+0

तो, पूछने का क्या मतलब है * "यदि इन दूर-से-वर्तमान तिथियों का प्रतिनिधित्व नहीं किया जा सकता है ..." * जब आप पहले ही जानते थे कि उनका प्रतिनिधित्व किया जा सकता है? प्रश्न पूछें, अगर आपको पता है कि यह मूक है? : पी –

+0

@ user1689607 मुझे नहीं पता, सवाल सिर्फ इसके बिना अपूर्ण महसूस हुआ। –

+0

वैसे, यह वैसे भी एक दिलचस्प सवाल था। जेएस को देखने के लिए अच्छा 2038 समस्या का सामना नहीं करता है। तत्काल संदर्भ-उद्धरण के लिए –

उत्तर

12
§15.9.1.1 of the ECMA-262 specification के अनुसार

,

समय 01 जनवरी, 1970 के बाद से यूटीसी मिलीसेकेंड में ECMAScript में मापा जाता है।
...
ईसीएमएस्क्रिप्ट दिनांक वस्तुओं द्वारा समर्थित समय की वास्तविक सीमा ... 01 जनवरी, 1 9 70 यूटीसी की शुरुआत में मध्यरात्रि के सापेक्ष मापा गया बिल्कुल -100,000,000 दिन 100,000,000 दिन। यह 01 जनवरी, 1 9 70 यूटीसी के दोनों तरफ 8,640,000,000,000,000 मिलीसेकंड की एक श्रृंखला देता है।

तो Date वस्तु के साथ जल्द से जल्द तारीख प्रदर्शनीय काफी दूर जाना जाता है मानव इतिहास से परे है:

new Date(-8640000000000000).toUTCString() 
// Tue, 20 Apr 271,822 B.C. 00:00:00 UTC 

नवीनतम तारीख Y10K परे और यहां तक ​​कि Y100K परे पिछले करने के लिए पर्याप्त है, लेकिन फिर से काम करने की आवश्यकता होगी Y276K से कुछ सौ साल पहले।

new Date(8640000000000000).toUTCString() 
// Sat, 13 Sep 275,760 00:00:00 UTC 

इस सीमा के बाहर कोई भी दिनांक Invalid Date वापस आ जाएगी।

new Date(8640000000000001) // Invalid Date 
new Date(-8640000000000001) // Invalid Date 

संक्षेप में, जावास्क्रिप्ट Date प्रकार से पहले 1 जनवरी, 1970 के बाद लगभग 285,616 साल के भीतर परिशुद्धता millisecond के लिए समय को मापने के लिए पर्याप्त होगा। प्रश्न में पोस्ट की गई तारीखें इस सीमा के अंदर बहुत ही आराम से हैं।

+0

+1। –

+0

मुझे विश्वास है कि अतीत की तारीख में एक टाइपो है। यह मुझे नई तिथि (-8640000000000000) .toUTCString() = 'मंगल, 20 अप्रैल -271821 00:00:00 जीएमटी' – Rohit

+0

@ रोहित अंत में '1' पर ध्यान दें। 'नई तिथि (-8640000000000001)' 'अमान्य तिथि 'है, जबकि' नई तिथि (-8640000000000000) 'वह तारीख है जो आपको मिली, सबसे पुरानी वैध तिथि। –

संबंधित मुद्दे