2012-03-22 7 views
5

कारण बनता है।तिथि करने के लिए 30 मिनट जोड़ने के लिए इसे वापस मैं एक जावास्क्रिप्ट दिनांक वस्तु 00:30 के बराबर है और जब कर रही है जाने के लिए 30 मिनट

क्या किसी को पता है कि यह क्यों हो रहा है?

यहाँ जहां कोड का इस्तेमाल किया जा रहा है:

for (var i = openTime; i <= closeTime; i.setMinutes(i.getMinutes() + timeIncrement)) { 
    var time = i.getHours() + (i.getHours() == 0 ? '0' : '') + ':' + i.getMinutes() + (i.getMinutes() == 3 || i.getMinutes() == 0 ? '0' : ''); 

    $(timeClientId).append($('<option />').val(time).text(time)); 
} 

ऊपर स्क्रिप्ट 02:00 अगले दिन के लिए सभी तरह से 10:00 बजे से उपलब्ध समय में से एक सूची बनाता है।

यह कई सफल पुनरावृत्तियों के बाद मध्यरात्रि 00:00 तक पहुंचने तक ठीक चलता है।

क्या कोई मदद कर सकता है?

धन्यवाद!

उत्तर/समाधान:

यह समस्या एक डेलाइट बचत के मुद्दे के कारण था, इसलिए इस शनिवार घड़ियों आगे जाने। कुछ अजीब कारणों के लिए जब 30 मिनट से 12:30 जोड़ते हैं तो यह .setMinutes() का उपयोग करके 12:00 पर रीसेट हो जाता है। यह इसे एक अंतहीन पाश में रखा। समाधान i.setTime (i.getTime() + timeIncrement * 60 * 1000) का उपयोग करके मिनटों को जोड़ना था इस समस्या को हल किया गया।

आपके सभी उत्तरों के लिए चीयर्स!

उत्तर

5

आप केवल मिनट सेट कर रहे हैं। तो निश्चित रूप से घड़ी पर 30 मिनट + 30 मिनट 60 मिनट के बराबर है, यानी 0 मिनट।

उपयोग इस चालाक विधि (क्योंकि यह सब रोलओवर के साथ काम करता यह चालाक है!):

new Date().add({ minutes: 30 }); 

या यहां तक ​​कि अधिक तरल पदार्थ:

function addMinutes(inDate, inMinutes) 
{ 
    var newdate = new Date(); 
    newdate.setTime(inDate.getTime() + inMinutes * 60000); 
    return newdate; 
} 

var date = new Date(); 

alert(addMinutes(date,-30));​ 
+0

आपके उत्तर के लिए धन्यवाद। आप 30 मिनट तक समय बढ़ाने के बारे में कैसे जाएंगे? – Base33

+0

एक नमूना जोड़ा गया। – Karlth

+0

धन्यवाद। यह सही भी है। – Base33

0

date.js एक अच्छा तरीका यह करने के लिए है

new Date().add(30).minutes(); 
3

आप अपनी तिथि कैसे शुरू कर रहे हैं? सेटमिन्यूट्स अपेक्षा के अनुसार काम करते हैं, इसलिए शायद आपके शुरुआती मूल्य में कोई त्रुटि है। मेरे त्वरित एन गंदे परीक्षण के लिए नीचे देखें।

var date = new Date(0); 
document.write(date); 
document.write("<br>"); 
date.setMinutes(30); 
document.write(date); 
document.write("<br>"); 
date.setMinutes(date.getMinutes() + 30); 
document.write(date); 
document.write("<br>"); 

आउटपुट:

Thu Jan 1 00:00:00 UTC 1970 
Thu Jan 1 00:30:00 UTC 1970 
Thu Jan 1 01:00:00 UTC 1970 
+0

यह सही है। मुझे नहीं पता था कि उस तारीख ने स्वचालित रोलओवर किया था। – Karlth

0

इस प्रयास करें:

var date = new Date(2013,2,31,1,59); 
document.write(date,"<br>"); 
date.setMinutes(date.getMinutes()+30); 
document.write(date,"<br>"); 
date.setMinutes(date.getMinutes() + 30); 
document.write(date,"<br>"); 
date.setMinutes(date.getMinutes() + 30); 
document.write(date,"<br>"); 

Sun Mar 31 2013 01:59:00 GMT+0100 (CET) 
Sun Mar 31 2013 01:29:00 GMT+0100 (CET) 
Sun Mar 31 2013 01:59:00 GMT+0100 (CET) 
Sun Mar 31 2013 01:29:00 GMT+0100 (CET) 

तो स्पष्ट रूप से जर्मनी में गर्मी के समय के लिए स्विच इस परिणाम उत्पन्न कर रहा है। लेकिन क्या इसका इरादा था? 2013,2,31,2,59 दर्ज करना एक ही परिणाम देता है, जैसे कि समय 1-2 मौजूद नहीं था। यह मेरे लिए सही नहीं लग रहा है।

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