42 我注意到在JavaScript中,创建时Date,月份是从零开始的,而日子不是从零开始的。 例如: var foo = new Date(2012, 1, 1) 产生2012年2月1日 为什么是这样? javascript date-format — 超额滚动 source 6 months = ['Jan', 'Feb',..., 'Nov', 'Dec']; month = months[date.getMonth()]; — zzzzBov 2012年
50 最有可能的想法是,将月份视为对月份名称数组的索引,而对天则简单地“计数”。 — 索尔斯滕·穆勒 source 21 从答案的角度来看,这很有意义,但认为这种逻辑已经存在了多长时间而我从未质疑过,这真是疯狂。 — rlemon 2 @rlemon您之前从未质疑过该逻辑的事实仅证明它是 — 合理的 14 FWIW,我从没想过这很有道理。在JavaScript中处理日期总是让我不寒而栗,因为在开始调试奇怪的结果之前,我通常会忘记这样的事情。 — FrustratedWithFormsDesigner 2012年 2 FWIW,我不是前端开发人员,除了偶尔new Date().getTime() — rlemon 20 说到Javascript,“这就是他们这么做的原因”和“这很有意义”是您很少听到的两件事。 — Tridus 2012年
14 也可能是Javascript日期旨在模仿Java日期。自开始以来,Java同样使用基于零的月份。 JDK API v1.0.2:Date.getMonth() — 丹尼·基希迈尔 source 6 Java规范反映了C tm结构。另请参见stackoverflow.com/questions/344380/... 35 这并不是说Java Date API是优秀设计的一个非常好的例子;-) — Joachim Sauer
months = ['Jan', 'Feb',..., 'Nov', 'Dec']; month = months[date.getMonth()];