2009-05-07 25 views
10

मैंने जावास्क्रिप्ट में Date ऑब्जेक्ट के getDay() फ़ंक्शन के साथ एक सप्ताह का दिन प्राप्त करने का प्रयास किया। सिद्धांत में यह ठीक काम करता है, लेकिन कभी-कभी आउटपुट में देरी होती है, इसलिए यदि फ़ंक्शन को "4" वापस करना चाहिए, तो यह "1" देता है।GetDay गलत मान क्यों देता है? (जावास्क्रिप्ट)

उदा।

var date= new Date("2009","04","30"); 
alert(date.getDay()); // the function returns 6, should return 4 

var date= new Date("2009","05","01"); 
alert(date.getDay()); // the function returns 1, should return 5 

मुझे सच में नहीं पता कि ऐसा क्यों होता है। यह उदाहरण आईई 8 से आता है। एफएफ 3 समान व्यवहार करता है, लेकिन अलग-अलग मान देता है। पहला वाला 7 है, न कि 4. दूसरा एक आईई 8 की तरह है।

कोई विचार क्यों ऐसा होता है?

उत्तर

16

क्योंकि माह संख्या शून्य आधारित है, एक आधारित नहीं है।

new Date("2009","04","30")मई की 30 वीं, नहीं अप्रैल के 30 वीं के लिए एक Date वस्तु बनाता है।

(कारण है कि यह शून्य आधारित है शायद ऐतिहासिक है, यानी यह एक अलग प्रणाली जिस तरह से समय में वापस में कुछ विधि के रूप में एक ही व्यवहार करती है ...)

+0

मुझे परवाह नहीं है क्या कारण है, यह नहीं है काफी है। शून्य-आधारित महीने STUPID हैं। लेकिन हम उनके साथ फंस गए हैं ... श्वास .... – RolandTumble

+1

ठीक है, सभी भाषाओं नहीं ... .NET में डेटटाइम (int, int, int) कंस्ट्रक्टर एक आधारित महीने संख्या का उपयोग करता है। – Guffa

+1

बहुत बहुत धन्यवाद, मुझे इस तरह की बेवकूफ चीजों के लिए जावास्क्रिप्ट से नफरत है ... -.- – SvenFinke

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