2014-12-11 9 views
7

2008 साल के लिए 60 मिनट सेट करने के लिए फ़ायरफ़ॉक्स 34 सेट मिनट दिनांक दिनांक विधि का एक अजीब व्यवहार है 01 जनवरी 23 घंटे 00 मिनट 00 सेकंड। यह उम्मीद है कि दिन में वृद्धि होगी लेकिन यह नहीं है।फ़ायरफ़ॉक्स 34 सेटमिन्यूट्स बीयूजी?

var initDate = [2008, 0, 1]; 
var d = new Date(initDate[0], initDate[1], initDate[2]); 
document.body.innerHTML += d + "<br/>"; 
d.setHours(23); 
d.setMinutes(60); 
document.body.innerHTML += d + "<br/>"; 

फ़ायर्फ़ॉक्स 34 परिणाम है:

Tue Jan 01 2008 00:00:00 GMT+0300 (Russia TZ 2 Standard Time) 
Tue Jan 01 2008 23:00:00 GMT+0300 (Russia TZ 2 Standard Time) 
बजाय क्रोम 39.0.2171.71 की

मीटर:

Tue Jan 01 2008 00:00:00 GMT+0300 (Russia TZ 2 Standard Time) 
Wed Jan 02 2008 01:00:00 GMT+0400 (Russia TZ 2 Daylight Time) 

अगर मैं 2006 तक साल बदलने के परिणाम ठीक है:

Sun Jan 01 2006 00:00:00 GMT+0300 (Russia TZ 2 Standard Time) 
Mon Jan 02 2006 00:00:00 GMT+0300 (Russia TZ 2 Standard Time) 

http://jsfiddle.net/7dp8xvf8/1/

क्या यह एक बग है?

अद्यतन: आईई 8 और 9 का एक ही व्यवहार है, लेकिन 10-11 ठीक है।

+2

स्पष्ट बिंदु है कि क्रोम ने टाइमज़ोन बदल दिया है लेकिन फ़ायरफ़ॉक्स नहीं है; मुझे लगता है कि आप उस स्थान पर हैं, उस समय कोई महत्वपूर्ण बदलाव था? मैं उस तारीख के आसपास ऑनलाइन कुछ भी नहीं ढूंढ पाया है। –

+0

यदि आप '60% से कम सेट' सेट करते हैं तो आप क्या व्यवहार देखते हैं? (उदाहरण के लिए, 'd.setMinutes (58);' उत्पादन क्या करता है?) मुझे नहीं लगता कि मैं अपने ब्राउज़र के टाइमज़ोन/स्थान को बदले बिना आपकी स्क्रिप्ट का परीक्षण कर सकता हूं। – apsillers

+0

@AdrianWragg मैं उस स्थान पर हूं लेकिन अंतिम फ़ायरफ़ॉक्स अद्यतन से पहले समस्या दिखाई नहीं दे रही है। –

उत्तर

0

specification को देखते हुए, मेरा मानना ​​है कि यह वास्तव में इरादा व्यवहार है। विशेष रूप से, ध्यान दें कि MakeTime function में कोई ओवरफ़्लो चेक नहीं है (यानी, यह निर्धारित नहीं करता है कि मिनटों की संख्या 60 से कम है)। मेकडेट फ़ंक्शन समान व्यवहार करता है; इसलिए, फ़ायरफ़ॉक्स वास्तव में विनिर्देश का सही ढंग से पालन कर रहा है।

+0

नहीं, स्पेक संख्या-के-मिलीसेकंड की गणना करता है-दिन-दर-दिन अनिवार्य रूप से व्यक्तिगत घटकों को जोड़ना। इस प्रकार 60 से मिनट निर्धारित करने से घंटे बदलना चाहिए। – Nickolay

0

के रूप में वर्तमान विकास का निर्माण (42a) के रूप में Firefox 39.0.3 में मेरे लिए इरादा रूप में अच्छी तरह से काम करता है यह, जैसा कि मैंने मिलती है:

"Tue Jan 01 2008 00:00:00 GMT+0300 (MSK)" 
"Wed Jan 02 2008 00:00:00 GMT+0300 (MSK)" 

यह भी क्या ES विनिर्देश की आवश्यकता है।

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

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