2017-10-13 1 views
-2

Wenn ich den folgenden JavaScript-Code ausführen gibt esWarum ist dieses JavaScript date() seltsam?

new Date(2017, 5, 31) 
// Sat Jul 01 2017 00:00:00 GMT+0530 (IST) 

Here I Monate verstehen Null basieren in Date() so überläuft es bis Juli. Aber wenn ich folgende laufen

new Date(2017, 12, 31) 
// Wed Jan 31 2018 00:00:00 GMT+0530 (IST) 

Hier warum das Datum ist Jan 31 stattdessen eine Ausnahme zu werfen?

new Date(2017, 13, 31) 
// Sat Mar 03 2018 00:00:00 GMT+0530 (IST). Why Mar 03 instead of Mar 31? 

Dank

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date erklärt, warum –

+0

Wie Sie bereits sagten, sind Monate Null-basiert (0-11), so dass '12' im Januar des nächsten Jahres überläuft. – Bergi

Antwort

3
new Date(2017, 5, 31) 
// Sat Jul 01 2017 00:00:00 GMT+0530 (IST) 

Juni nur 30 Tage hat, so dass die Balance 1 Tag (31 - 30 = 1) Überlauf 01.

new Date(2017, 12, 31) 
// Wed Jan 31 2018 00:00:00 GMT+0530 (IST) 

ähnlich Juli worden, Jahr 2017 hat nur 12 Monate , so der Saldo 1 Monat Überlauf zu 2018 Jan. Zufällig hat Januar 31 Tage zu, so wird es 2017 31 Januar (31 - 31 = 0).

new Date(2017, 13, 31) 
// Sat Mar 03 2018 00:00:00 GMT+0530 (IST). Why Mar 03 instead of Mar 31? 

Durch diese Logik hat das Jahr 2017 nur 12 Monate, so dass das Gleichgewicht 2 Monate überlaufen, um 2018 Februar zu werden.

Leider Febraur 2018 nur 28 Tage hat, so die Balance 3 Tage (31 - 28 = 3) Überlauf geworden März 03.

Verwandte Themen