0

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

下面的示例应返回“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');

谁能看到我哪里出错了。

谢谢

4

3 回答 3

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]);
于 2013-11-14T18:35:01.513 回答
0

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

于 2013-11-14T18:37:58.577 回答
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');
于 2013-11-14T18:38:15.627 回答