2017-10-06 1 views
2

Hier ist die Ausgabe von der Visual Studio-Sofort-Fenster. Ich beginne mit mondaysDate, erstelle ein zweites Datum, thisDate, und füge dann ganze Zahlen hinzu, indem ich mondaysDate als Basis verwende.Bitte erklären Sie meinen Fehler in diesem Javascript Datum Mathematik

Ich verstehe nicht, warum das Hinzufügen von 3 zu dem Datum November 2 und das Hinzufügen von 4 zum Datum ergibt 4. Dezember.

Ist es illegal, setDate() mehr als einmal aufzurufen?

?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

Wenn Sie sagen "Datum + 3", meinst du hinzufügen 3 Tage, 3 Monate, 3 Jahre? – csmckelvey

+0

Ich gehe davon aus, dass es Tage hinzufügen: https://stackoverflow.com/questions/3818193/how-to-add-number-of-days-to-todays-date – Tim

+0

Was ist das Ergebnis erwarten Sie? – Cristy

Antwort

3

Das Problem ist, dass Sie zum ersten Mal 33 days von 1. Oktober hinzufügen, dann fügen Sie 34 days von 1. November

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) 

Das Datum auf thisDate relativ eingestellt ist, bei der 1. des aktuellen Monats beginnen und fügt die Tagesnummer in mondaysDate + 4 Tage hinzu. Jedes Mal, wenn Sie setDate anrufen, aktualisieren Sie thisDate.

Sie können mehr über setDate unter MDN lesen.

+1

Warum ist der erste Anruf nicht 33 Tage hinzufügen? – Tim

+2

@Patrick Evans: Wenn es 33 Tage zum 30. Oktober hinzufügt, warum sagt es 2. November? – Tim

+0

@Tim, Überprüfen Sie den MDN-Link, den Cristy angehängt hat. 'Die Methode setDate() setzt den Tag des Date-Objekts relativ zum Anfang des aktuell eingestellten Monats. –

Verwandte Themen