Javascript日期方法不一致 - getDate vs getMonth

时间:2012-03-13 15:56:02

标签: javascript date

这让我昨晚感到头疼,我想了解为什么Date对象中的getDate方法基于1(返回值为1-31),而getMonth方法为0(返回0-11) 。我想知道为什么同一个对象的方法存在这种不一致。

我理解为什么现在很难改变这种行为,但是有没有什么理由首先这样设计?

可以在此处找到文档:http://www.w3schools.com/jsref/jsref_obj_date.asp

4 个答案:

答案 0 :(得分:21)

所以我给Brendan Eich发了一条推文,问他这个问题(对于那些不知道他是JS的创造者的人),他的回答是:

  

@magrangs因为java.util.Date就是这样做的。

https://twitter.com/BrendanEich/status/179610205317902337

答案 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中,计数器从零开始。

月份不一定必须用数字表示。 “月份”是可数序列。该序列的第一个元素由零引用。

在现实生活中,天数由固定数字表示。尽管天数也是可数的,但将第一天称为第零天将是非常令人困惑的。