2017-10-06 47 views
2

以下是Visual Studio立即窗口的輸出。我從mondaysDate開始,創建第二個日期,thisDate,然後使用mondaysDate作爲基數向它添加整數。請在此javascript日期數學中解釋我的錯誤

我不明白爲什麼在日期中添加3生成11月2日並在日期中添加4生成12月4日。

不止一次調用setDate()是否違法?

?mondaysDate 
Mon Oct 30 2017 00:00:00 GMT-0400 (Eastern Daylight Time) 

?thisDate 
Mon Oct 30 2017 00:00:00 GMT-0400 (Eastern Daylight Time) 

?thisDate.setDate(mondaysDate.getDate() + 3) 
1509595200000 
?thisDate 
Thu Nov 02 2017 00:00:00 GMT-0400 (Eastern Daylight Time) 


?thisDate.setDate(mondaysDate.getDate() + 4) 
1512363600000 
?thisDate 
Mon Dec 04 2017 00:00:00 GMT-0500 (Eastern Standard Time) 

?mondaysDate 
Mon Oct 30 2017 00:00:00 GMT-0400 (Eastern Daylight Time) 
+0

當你說'日期+ 3',你的意思是添加3天,3個月,3年? – csmckelvey

+0

我假設它是添加日期:https://stackoverflow.com/questions/3818193/how-to-add-number-of-days-to-todays-date – Tim

+0

你期望的結果是什麼? – Cristy

回答

3

的問題是,你第一次從10月1日加33 days,那麼你從1月新增34 days

thisDate.setDate(mondaysDate.getDate() + 3) 
// You set the date to 30 + 3 (33) days from the first day of the current month (Oct 1) 
// Oct 1 + 33 days = Nov 2 
// thisDate = Thu Nov 02 2017 00:00:00 GMT-0400 (Eastern Daylight Time) 

thisDate.setDate(mondaysDate.getDate() + 4) 
// You set the date to 30 + 4 (34) days from the first day of the current month (Nov 1) 
// Nov 1 + 34 days = Dec 4 
// thisDate = Mon Dec 04 2017 00:00:00 GMT-0500 (Eastern Standard Time) 

的日期相對設置thisDate,並從當前本月1日,並在mondaysDate + 4天添加天數。每當您撥打setDate時,您都會更新thisDate

您可以在MDN上閱讀更多關於setDate的信息。

+1

爲什麼不是第一次加入33天? – Tim

+2

@帕特里克埃文斯:如果它增加33天到10月30日,爲什麼說11月2日? – Tim

+0

@Tim,檢查Cristy附加的MDN鏈接。 'setDate()方法設置Date對象相對於當前設置月份的開始日期。 –