这让我昨晚感到头疼,我想了解为什么Date对象中的getDate方法基于1(返回值为1-31),而getMonth方法为0(返回0-11) 。我想知道为什么同一个对象的方法存在这种不一致。
我理解为什么现在很难改变这种行为,但是有没有什么理由首先这样设计?
答案 0 :(得分:21)
所以我给Brendan Eich发了一条推文,问他这个问题(对于那些不知道他是JS的创造者的人),他的回答是:
@magrangs因为java.util.Date就是这样做的。
答案 1 :(得分:14)
我认为几个月是基于0的,因为设计JavaScript语言时Java did it the same way。
编辑 Oracle删除了较旧的Java文档,有an archived version of that page。
答案 2 :(得分:6)
很难说,但我怀疑Month是0,所以它可以很容易地用作包含月份名称的月份数组中的索引器
var months = new ["Jan", "Feb", ....]
months[new Date().getMonth()];
答案 3 :(得分:4)
在JavaScript中,计数器从零开始。
月份不一定必须用数字表示。 “月份”是可数序列。该序列的第一个元素由零引用。
在现实生活中,天数由固定数字表示。尽管天数也是可数的,但将第一天称为第零天将是非常令人困惑的。