2017-10-13 106 views
-2

當我運行下面的JavaScript代碼,返回爲什麼這個JavaScript date()很奇怪?

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

這裏的月份是零基礎,在Date()所以溢出到7月,我明白了。但是當我運行以下

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

這裏爲什麼日期爲Jan 31,而不是拋出一個異常?

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

感謝

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date解釋了爲什麼 –

+0

正如你所說的,月份基於零(0-11),所以'12'溢出到明年的一月份。 – Bergi

回答

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

6月只有30天,因此平衡1天(31 - 30 = 1)溢出,成爲七月01

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

同樣的,2017年只有12個月,所以餘額1個月溢出成爲2018年1月。巧合的是,1月也有31天,所以它變成2017年1月31日(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? 

由此邏輯,2017年只有12個月,所以餘額2個月溢出成爲2018年2月。

不幸的是,2018 Febraury只有28天,因此平衡3天(31 - 28 = 3)溢出,成爲三月03

相關問題