[JavaScript]用JS取下一個月/用JS取指定天數的日期

如何用JS取得下一個月的時間

如何用JS取指定天數的日期

如何用JS達到C#的DateTime.AddMonths功能

 

目前原生 JavaScript 並沒有提供客製化處理時間,

如果取得下一個月的時間、前後一個月時間、前後半年時間,或是指定的時間

目前方法有兩種:

1.使用別人寫好的套件

(個人推薦:Moment.js)

2.只能自己乖乖寫

(提供範例是取得下一個月時間,但前後半年時間,或是指定的時間方法是相同的)

let inDate = new Date(dateOri);
//                     1   2   3   4   5   6   7   8   9  10  11  12月
let daysInMonth = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let strYear = inDate.getFullYear();
let strMonth = inDate.getMonth() + 1;
let strDay = inDate.getDate();
//一、解決閏年平年的二月份天數 //平年28天、閏年29天//能被4整除且不能被100整除的為閏年,或能被100整除且能被400整除
if (((strYear % 4) === 0) && ((strYear % 100) !== 0) || ((strYear % 400) === 0)) {
    daysInMonth[2] = 29;
}
//二、解決跨年問題
if (strMonth + 1 === 13)
{
    strYear += 1;
    strMonth = 1;
}
else {
    strMonth += 1;
}
//三、解決當月最後一日,例如2.28的下一個月日期是3.31;6.30下一個月日期是7.31;3.31下一個月是4.30
if (strMonth == 2 || strMonth == 4 || strMonth == 6 || strMonth == 9 || strMonth == 11) {
    strDay = Math.min(strDay, daysInMonth[strMonth]);
}
else {
    if (strDay >= 28) {
        strDay = Math.max(strDay, daysInMonth[strMonth]);
    }
    else {
        strDay = Math.min(strDay, daysInMonth[strMonth]);
    }
    
}

//四、給個位數的月、日補零
if (strMonth < 10)
{
    strMonth = "0" + strMonth;
}
if (strDay < 10) {
    strDay = "0" + strDay;
}
let datastr = strYear + "/" + strMonth + "/" + strDay;
return datastr;

 

參考來源:JS 获取前一个月的日期

 


與每個人,一起分享所學到,所用到的,

若有錯誤,請您不吝指教,謝謝大家。