鍍金池/ 問答/HTML/ 如圖,js代碼今天是7月31,為什么輸入“-1”會返回7月1日,而不是6月30?

如圖,js代碼今天是7月31,為什么輸入“-1”會返回7月1日,而不是6月30?

function getMonthAfter (num){
    var dt = new Date();
    dt.setMonth( dt.getMonth()+num );
    return dt.toLocaleString()
}

知道問題所在了,那應該如何處理這個問題呢?

回答
編輯回答
青檸

一種邏輯處理, 7月31 分開 month 與 day, 你單獨設置了 month-1, 之后31號會被計算為 6月31 => 7 月 1 日

2017年12月23日 17:36
編輯回答
喵小咪

因為js的Date對象對溢出時間進行了自己的處理。
今天是7月31日Month-1得到6月31日
但是6月沒有31日,多出來的一天自動加上去就變成7月1日
你可以試下dt.setMonth(1)設置成二月,會發(fā)現(xiàn)結果是3月3日
或設置成超出本月最大日期的數(shù)字,比如dt.setDate(35) 結果是8月4日
都是因為這個自動處理算法的原因

2017年8月25日 02:38
編輯回答
維她命

大概是因為 6月沒有 31號吧

2018年2月21日 06:43