2011-12-01 11 views
7

मेरी बेला यहाँ दिसम्बरजावास्क्रिप्ट getUTCMonth() दिसंबर के लिए 0 देता है?

http://jsfiddle.net/3CpXz/

var exploded = "2011-12-25".split('-'); 
var d = new Date(exploded[0], exploded[1], exploded[2]); 
document.write("year"+d.getUTCFullYear()+ " month"+d.getUTCMonth()+" day"+d.getUTCDate()); 

ऐसा क्यों है के लिए 0 लौटा रहा है?

उत्तर

9

नहीं, यह है

आप मानव पठनीय माह से 1 घटाना करने की जरूरत है दूसरी तरफ: आप तारीख को परिभाषित कर रहे हैं जैसे कि यह जनवरी में था।

the documentation on Date() देखें:

माह - पूर्णांक मान महीने का प्रतिनिधित्व करने, दिसंबर के लिए 11 जनवरी के लिए 0 के साथ शुरुआत।

आपने 12 प्रदान किया, इसलिए इसे 0 (जनवरी) के रूप में माना गया।

यदि आपको प्रमाण की आवश्यकता है, तो modified version of the script, showing the whole date and time देखें।

+0

धन्यवाद !!! ओएमजी मैं एक मंद हूं, मैंने देखा है कि 25 वें के बजाय 24 वें स्थान पर आउटपुट करने का कारण यह है कि टाइमस्टैम्प 00:00 है? – Baconbeastnz

+0

@Baconbeastnz: मेरा मानना ​​है कि यह विशिष्ट मुद्दा निम्न का परिणाम है: आप स्थानीय समय के रूप में तारीख बना रहे हैं, लेकिन आप यूटीसी दिवस को आउटपुट कर रहे हैं। देखें [यूटीसी और स्थानीय समय दोनों के लिए विस्तृत परिणाम शामिल हैं] (http://jsfiddle.net/3CpXz/12/)। क्या इससे मदद मिली? – Tadeck

+0

@Baconbeastnz: असल में आप पूर्वी गोलार्द्ध में कहीं हैं और उस यूटीसी समय की वजह से वास्तव में पहले (यदि आप यह कह सकते हैं)। – Tadeck

2

दिसम्बर दिनांक वस्तु में 11 है। इसे 0-अनुक्रमित करने के लिए आपको 1 घटा देना होगा। आपको लगता है कि यह वर्ष के लिए 2012 प्रिंट नोटिस

http://www.w3schools.com/jsref/jsref_getutcmonth.asp

+2

मैं आपके उत्तर को ऊपर उठाऊंगा, क्योंकि यह ओपी को सही दिशा में इंगित करता है (जैसे @ गेबे का उत्तर और मेरा), लेकिन मैं आपके द्वारा संदर्भित जानकारी के स्रोत के कारण ऐसा नहीं करूँगा। विस्तृत स्पष्टीकरण और कारणों के लिए कृपया [W3Fools.com] (http://w3fools.com/) देखें। – Tadeck

+0

यह अभी भी सटीक है: पी – jzila

+0

नहीं, यह नहीं है, मुझे विश्वास है :) देखें [दिनांक ऑब्जेक्ट डॉक्स] (http://www.w3schools.com/jsref/jsref_obj_date.asp) और [जेएस डेट ऑब्जेक्ट ट्यूटोरियल] (http: //www.w3schools.com/js/js_obj_date.asp) - ** उनमें से कोई भी ** वास्तव में उल्लेख नहीं करता है कि 'नई तिथि() 'जनवरी के लिए' 0' से शुरू होने वाले महीने की संख्या दी जानी चाहिए (और '11' दिसंबर के लिए)। लिंक आपने दिनांक वस्तु के निर्माता के लिए नहीं, 'getUTCMonth()' के लिए केवल सही मानों का उल्लेख किया है। उस लिंक में 'var month = new Array (12) भी है;' इसके उदाहरण में, जो एक अच्छा अभ्यास नहीं है। डब्ल्यू 3 स्कूल्स त्रुटियों से भरे हुए हैं :( – Tadeck

7

किया? समस्या यह है कि यह 0-आधारित महीने का उपयोग करता है, इसलिए ऐसा लगता है कि इस साल के 12 महीने वास्तव में अगले वर्ष के 0 वें महीने हैं। दूसरे शब्दों में, 0 जनवरी और 11 दिसंबर है, इसलिए 12 जनवरी है। यदि मैं यह करने के लिए प्रोग्राम बदल

var d = new Date(exploded[0], exploded[1] - 1, exploded[2]); 

:

var exploded = "2011-12-25".split('-'); 
var d = new Date(exploded[0], exploded[1] - 1, exploded[2]); 
document.write(d.toString()); 

यह प्रिंट: Sun Dec 25 00:00:00 EST 2011

+0

जो साल 20121 महीना 11 दिन 24 लौट रहे हैं, जो गलत है:/ – Baconbeastnz

+0

अगर मैं इसे संशोधित करता हूं तो वास्तव में http://jsfiddle.net/3CpXz/, यहां तक ​​कि केवल toString() – Baconbeastnz

+1

@Baconbeastnz विफल हो रहा है क्योंकि 'getUTCMonth '0-11 भी है। कोशिश करें: '" महीना "+ (डी .getUTCMonth() + 1)' –

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