Javascript Date方法不一致-getDate与getMonth



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

我理解为什么现在很难改变这种行为,但有什么原因让它一开始就被设计成这样吗?

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

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

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

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

我认为月份是基于0的,因为Java在设计JavaScript语言时也是这样做的。

EDITOracle删除了旧的Java文档,该页面有一个存档版本。

很难说,但我怀疑Month是基于0的,所以它可以很容易地用作保存月份名称的months数组中的索引器

var months = new ["Jan", "Feb", ....]
months[new Date().getMonth()];

在JavaScript中,计数器从零开始。

月份不一定要用数字来表示。"Months"是一个可数序列。这个序列的第一个元素用零表示。

在现实生活中,日子用一个固定的数字表示。虽然天数也是可以计数的,但将第一天表示为零日会非常令人困惑。

最新更新