6月31日的Javascript日期错误?

时间:2014-01-05 10:03:04

标签: javascript jquery date

我正在尝试查看日期表格,我遇到以下问题:2014-06-30和2014-07-01之间的日期差异是两天。以下是我的测试代码的简化部分:

var date1 = (new Date(2012, 06, 30)).getTime();
var date2 = (new Date(2012, 07, 01)).getTime();
console.log(Math.round((date2-date1)/(1000.0*60*60*24)));

结果为“2”。只有当我将date1设置为(2014,06,31)时它才给我1但是你知道6月只有31天! 如果我将年份改为2012年,2013年......

,结果就是同样的事件

2 个答案:

答案 0 :(得分:7)

月份从0开始,因为Date对象的documentation解释了:

  

表示月份的整数值,从1月的0开始到12月的11。

因此您可能认为new Date(2012, 06, 30)不是六月。这是七月。这就是它有31天的原因。

在您的示例中,您计算​​的是8月1日到7月30日之间的日期差异,因为您的微积分表示为2天。

如果您想计算7月1日到6月30日之间的日差:

var date1 = (new Date(2012, 05, 30)).getTime();
var date2 = (new Date(2012, 06, 01)).getTime();
console.log(Math.round((date2-date1)/(1000.0*60*60*24)));

答案 1 :(得分:2)

new Date(2012, 06, 30) 7月,而不是6月。

在JavaScript控制台中试用:

> new Date(2012, 06, 30) 
Mon Jul 30 2012 00:00:00 GMT-0400 (EDT)
> new Date(2012, 06, 31) 
Tue Jul 31 2012 00:00:00 GMT-0400 (EDT)