একটি লাইব্রেরি ব্যবহার করে
আপনি যদি অনেক তারিখের কাজ করে থাকেন তবে আপনি জাভাস্ক্রিপ্টের তারিখ লাইব্রেরি যেমন ডেটজ বা মোমেন্ট.জেএস দেখতে চাইতে পারেন । উদাহরণস্বরূপ, মোমেন্ট.জেএস সহ, এটি সহজভাবে:
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 ঘন্টা দীর্ঘ হয় না। বছরে একদিন থাকে যা কেবল ২৩ ঘন্টা দীর্ঘ এবং বছরে একদিন 25 ঘন্টা দীর্ঘ। উদাহরণস্বরূপ, মার্কিন যুক্তরাষ্ট্র এবং কানাডার বেশিরভাগ ক্ষেত্রে, নভেম্বর 2, 2014, মধ্যরাতের 24 ঘন্টা পরে এখনও নভেম্বর 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!
এই কারণেই আপনাকে উল্লিখিত লাইব্রেরিগুলির একটি ব্যবহার করা নিরাপদ বাজি এটির সাথে যদি আপনাকে অনেক কাজ করতে হয়।
নীচে আমি এই ফাংশনটির আরও জেনেরিক সংস্করণ লিখেছি। আমি এখনও একটি লাইব্রেরি ব্যবহার করার পরামর্শ দিচ্ছি, তবে এটি আপনার প্রকল্পের জন্য ওভারকিল / অসম্ভব হতে পারে। সিনট্যাক্সটি মাইএসকিউএল 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;
}
জেএসফিডাল ডেমো কাজ করছে ।