计算两个日期之间的天数

时间:2013-11-14 18:31:02

标签: javascript date

我有下面的代码,我遇到了麻烦。我想获取一个日期字符串并转换为日期对象。然后计算这个日期和今天之间的天数。

以下示例应返回“6天”,而是返回“35天”。

var tmp = '20/11/2013';
var myDateParts = tmp.split("/");                       
var oneDay = 24*60*60*1000;
var today = new Date();
var secondDate = new Date(myDateParts[2], myDateParts[1], myDateParts[0]);
var diffDays = Math.round(Math.abs((secondDate.getTime() - today.getTime()))/(oneDay));

console.log(diffDays+' days');

任何人都可以看到我出错的地方。

由于

3 个答案:

答案 0 :(得分:2)

月份为零,因此11表示12月(35天是今天,2013年11月14日和2013年12月20日之间的正确差异)。

更改此行:

var secondDate = new Date(myDateParts[2], myDateParts[1], myDateParts[0]);

对此:

var secondDate = new Date(myDateParts[2], parseInt(myDateParts[1])-1, myDateParts[0]);

答案 1 :(得分:0)

JavaScript日期构造函数将0视为1月,1表示2月,等等 因此,在应用getTime之前,您需要从'tmp'月的值中减去1。

答案 2 :(得分:0)

你有一个一个一个错误 - 看起来几个月是零索引的。看到这个jsfiddle:http://jsfiddle.net/62YK6/

var tmp = '21/10/2013';
var myDateParts = tmp.split("/");                       
var oneDay = 24*60*60*1000;
var today = new Date();
var secondDate = new Date(myDateParts[2], myDateParts[1], myDateParts[0]);
var diffDays = Math.round(Math.abs((secondDate.getTime() - today.getTime()))/(oneDay));

console.log(secondDate);
console.log(diffDays+' days');