लाइब्रेरी का उपयोग करना
यदि आप बहुत सारे दिनांक कार्य कर रहे हैं, तो आप Datejs या Moment.js जैसे जावास्क्रिप्ट दिनांक पुस्तकालयों में देखना चाह सकते हैं । उदाहरण के लिए, Moment.js के साथ, यह बस है:
var newDateObj = moment(oldDateObj).add(30, 'm').toDate();
वेनिला जावास्क्रिप्ट
यह अराजकता के जवाब की तरह है , लेकिन एक पंक्ति में:
var newDateObj = new Date(oldDateObj.getTime() + diff*60000);
कहाँ diff
तुम चाहते मिनट में अंतर से है oldDateObj
के समय। यह नकारात्मक भी हो सकता है।
या एक पुन: प्रयोज्य कार्य के रूप में, यदि आपको इसे कई स्थानों पर करने की आवश्यकता है:
function addMinutes(date, minutes) {
return new Date(date.getTime() + minutes*60000);
}
और सिर्फ अगर यह स्पष्ट नहीं है, तो जिस कारण से हम मिनटों को गुणा करते हैं, वह 60000
मिनटों को मिलीसेकंड में बदलना है।
वेनिला जावास्क्रिप्ट के साथ सावधान रहें। तारीखें कठिन हैं!
आप सोच सकते हैं कि आप कल की तारीख पाने के लिए एक तारीख में 24 घंटे जोड़ सकते हैं, है ना? गलत!
addMinutes(myDate, 60*24); //DO NOT DO THIS
यह पता चला है, अगर उपयोगकर्ता दिन के उजाले की बचत का समय देखता है, तो एक दिन जरूरी नहीं कि 24 घंटे लंबा हो। साल में एक दिन ऐसा होता है जो केवल 23 घंटे लंबा होता है, और साल में एक दिन 25 घंटे लंबा होता है। उदाहरण के लिए, संयुक्त राज्य अमेरिका और कनाडा के अधिकांश में, आधी रात के बाद 24 घंटे, 2 नवंबर 2014, अभी भी 2 नवंबर है:
const NOV = 10; //because JS months are off by one...
addMinutes(new Date(2014, NOV, 2), 60*24); //In USA, prints 11pm on Nov 2, not 12am Nov 3!
यही कारण है कि उपरोक्त उल्लिखित पुस्तकालयों में से एक का उपयोग करना एक सुरक्षित शर्त है यदि आपको इसके साथ बहुत काम करना है।
नीचे इस फ़ंक्शन का एक अधिक सामान्य संस्करण है जो मैंने लिखा था। मैं अभी भी एक पुस्तकालय का उपयोग करने की सलाह दूंगा, लेकिन यह आपकी परियोजना के लिए ओवरकिल / असंभव हो सकता है। सिंटैक्स को MySQL DATE_ADD फ़ंक्शन के बाद बनाया गया है ।
/**
* Adds time to a date. Modelled after MySQL DATE_ADD function.
* Example: dateAdd(new Date(), 'minute', 30) //returns 30 minutes from now.
* https://stackoverflow.com/a/1214753/18511
*
* @param date Date to start with
* @param interval One of: year, quarter, month, week, day, hour, minute, second
* @param units Number of units of the given interval to add.
*/
function dateAdd(date, interval, units) {
if(!(date instanceof Date))
return undefined;
var ret = new Date(date); //don't change original date
var checkRollover = function() { if(ret.getDate() != date.getDate()) ret.setDate(0);};
switch(String(interval).toLowerCase()) {
case 'year' : ret.setFullYear(ret.getFullYear() + units); checkRollover(); break;
case 'quarter': ret.setMonth(ret.getMonth() + 3*units); checkRollover(); break;
case 'month' : ret.setMonth(ret.getMonth() + units); checkRollover(); break;
case 'week' : ret.setDate(ret.getDate() + 7*units); break;
case 'day' : ret.setDate(ret.getDate() + units); break;
case 'hour' : ret.setTime(ret.getTime() + units*3600000); break;
case 'minute' : ret.setTime(ret.getTime() + units*60000); break;
case 'second' : ret.setTime(ret.getTime() + units*1000); break;
default : ret = undefined; break;
}
return ret;
}
काम jsFiddle डेमो ।