2017-10-06 2 views
2

ここにVisual Studioのイミディエイトウィンドウの出力があります。 mondaysDateで始まり、2番目の日付である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

問題は、最初の時間は、あなたが、あなたは現在の月の1日から開始し、thisDateに日付が相対的に設定されている

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) 

11月1から34 daysを追加し、10月1日から33 daysを追加することです日番号をmondaysDate + 4日に追加します。 setDateに電話するたびに、thisDateを更新します。

MDNでsetDateの詳細を読むことができます。

+1

最初の呼び出しで33日追加するのはなぜですか? – Tim

+2

@Patrick Evans:もし10月30日までに33日追加すれば、なぜ11月2日と言われますか? – Tim

+0

@Tim、Cristyが接続しているMDNリンクを確認してください。 'setDate()メソッドは、現在設定されている月の始めに相対してDateオブジェクトの日を設定します。 –

関連する問題