我正在尝试查看日期表格,我遇到以下问题: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年......
,结果就是同样的事件答案 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)