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

Dan*_*din 13 javascript date

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

我理解为什么现在很难改变行为,但有没有任何理由这样设计就像这样?

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

Mag*_*ngs 21

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

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

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

  • 好的,新问题:为什么Java会这样做?("因为C就是这样做的!"......好吧,为什么C这样做呢?...... ???) (3认同)

Tom*_*lak 14

我想几个月是基于0的,因为Java在设计JavaScript语言时的表现方式相同.

编辑 Oracle删除了较旧的Java文档,该页面一个存档版本.

  • @Tomalak:根据Brendan Eich的回应,看起来好像你是对的 - https://twitter.com/#!/BrendanEich/status/179638412775661572 (4认同)

Jak*_*cki 6

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

var months = new ["Jan", "Feb", ....]
months[new Date().getMonth()];
Run Code Online (Sandbox Code Playgroud)