একটি জেএস তারিখ অবজেক্ট এবং আপনি কত মাস যুক্ত / বিয়োগ করতে চান তার একটি পূর্ণসংখ্যা পাস করুন। monthsToAdd
ইতিবাচক বা নেতিবাচক হতে পারে। একটি জেএস তারিখের অবজেক্ট প্রদান করে।
যদি আপনার originalDateObject
31 শে মার্চ হয় এবং আপনি -1 পাস করেন monthsToAdd
তবে আপনার আউটপুট তারিখটি 28 ফেব্রুয়ারি হবে।
আপনি যদি প্রচুর মাস কেটে যান, 36 বলুন, এটি বছরের অ্যাডজাস্টমেন্টটিও সঠিকভাবে পরিচালনা করবে।
const addMonthsToDate = (originalDateObject, monthsToAdd) => {
const originalDay = originalDateObject.getUTCDate();
const originalMonth = originalDateObject.getUTCMonth();
const originalYear = originalDateObject.getUTCFullYear();
const monthDayCountMap = {
"0": 31,
"1": 28,
"2": 31,
"3": 30,
"4": 31,
"5": 30,
"6": 31,
"7": 31,
"8": 30,
"9": 31,
"10": 30,
"11": 31
};
let newMonth;
if (newMonth > -1) {
newMonth = (((originalMonth + monthsToAdd) % 12)).toString();
} else {
const delta = (monthsToAdd * -1) % 12;
newMonth = originalMonth - delta < 0 ? (12+originalMonth) - delta : originalMonth - delta;
}
let newDay;
if (originalDay > monthDayCountMap[newMonth]) {
newDay = monthDayCountMap[newMonth].toString();
} else {
newDay = originalDay.toString();
}
newMonth = (+newMonth + 1).toString();
if (newMonth.length === 1) {
newMonth = '0' + newMonth;
}
if (newDay.length === 1) {
newDay = '0' + newDay;
}
if (monthsToAdd <= 0) {
monthsToAdd -= 11;
}
let newYear = (~~((originalMonth + monthsToAdd) / 12)) + originalYear;
let newTime = originalDateObject.toISOString().slice(10, 24);
const newDateISOString = `${newYear}-${newMonth}-${newDay}${newTime}`;
return new Date(newDateISOString);
};