JavaScript Date.new()月偏移量

时间:2015-09-24 10:32:16

标签: javascript

简单问题:

为什么8被解释为September而不是August

new Date(2012, 8, 30)
new Date(Date.UTC(2012, 8, 30))

// Sun Sep 30 2012 00:00:00 GMT+0100 (BST)

2 个答案:

答案 0 :(得分:3)

因为the specification says so

  

月份由0到11(包括0和11)范围内的整数标识。

而且,更具体地说,进一步:

  

月份值0指定1月; 1指明二月; 2指定March; 3指明四月; 4指定May; 5指定6月; 6指定7月; 7指定八月; 8指定9月; 9指定10月; 10指定11月; 11指定12月。

答案 1 :(得分:1)

因为月份参数为零

来自docs

  

此处Date被称为具有多个参数的构造函数,如果值大于其逻辑范围(例如,13为月值或70为微小值),则将调整相邻值。例如。新日期(2013,13,1)相当于新日期(2014,1,1),均创建2014-02-01的日期(请注意月份为0 )。类似地,对于其他值:新日期(2013,2,1,0,70)等同于新日期(2013,2,1,1,10),它们都创建2013-03-01T01:10:00的日期。