为什么Javascript对几天和几个月的处理方式不同?


42

我注意到在JavaScript中,创建时Date,月份是从零开始的,而日子不是从零开始的。

例如:

var foo = new Date(2012, 1, 1)

产生2012年2月1日

为什么是这样?


6
months = ['Jan', 'Feb',..., 'Nov', 'Dec']; month = months[date.getMonth()];
zzzzBov 2012年

Answers:


50

最有可能的想法是,将月份视为对月份名称数组的索引,而对天则简单地“计数”。


21
从答案的角度来看,这很有意义,但认为这种逻辑已经存在了多长时间而我从未质疑过,这真是疯狂。
rlemon

2
@rlemon您之前从未质疑过该逻辑的事实仅证明它是
合理的

14
FWIW,我从没想过这很有道理。在JavaScript中处理日期总是让我不寒而栗,因为在开始调试奇怪的结果之前,我通常会忘记这样的事情。
FrustratedWithFormsDesigner 2012年

2
FWIW,我不是前端开发人员,除了偶尔new Date().getTime()
rlemon

20
说到Javascript,“这就是他们这么做的原因”和“这很有意义”是您很少听到的两件事。
Tridus 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.