在计算具有时间戳的日期之间时出现NaN javascript错误

时间:2015-01-29 11:01:03

标签: javascript

我首先要说的是在发布之前我在这个论坛中查看了多个主题。无法找到我的解决方案:(

问题:在尝试使用两个文本框中的时间戳找到两个日期之间的差异时收到NaN错误。

我使用的日期格式为DDMMYYYY HH:MM - 27/01/2015 00:00 代码如下。

提前感谢您提供这个超级有用的论坛:)

function stringToDate(s) {
    var dateParts = s.split(' ')[0].split('-'); 
    var timeParts = s.split(' ')[1].split(':');
    var d = new Date(dateParts[0], --dateParts[1], dateParts[2]);
    d.setHours(timeParts[0], timeParts[1], timeParts[2]);

    return d;
}

function test() {
    var a = textbox_1.value;
    var b = textbox_2.value;
    alert(stringToDate(a) - stringToDate(b));
}

4 个答案:

答案 0 :(得分:1)

您的日期有[{1}}作为分隔符,但您要在/上拆分字符串。变化

-

var dateParts = s.split(' ')[0].split('-');

此外,您的时间部分只有几小时和几分钟,因此没有var dateParts = s.split(' ')[0].split('/'); 存在,只需将其从timeParts[2]电话中移除即可。像这样:

setHours()

小提琴: http://jsfiddle.net/2evj59d1/

修改
您的代码以毫秒为单位返回差异。要将其转换为日期格式,只需更改

d.setHours(timeParts[0], timeParts[1])

alert(stringToDate(a) - stringToDate(b));

答案 1 :(得分:0)

代码试图以HH:MM:SS格式解析时间。略过第三部分:

d.setHours(timeParts[0], timeParts[1]);

答案 2 :(得分:0)

您可以将日期转换为毫秒,获取差异并获取日期。

Fiddle

JSCode:

var a = new Date();
a.setDate(15);
a = a.getTime();
var b = new Date();
b.setDate(32);
b = b.getTime();
var c = b - a;
var date = new Date(c);
alert(date.getDate() - 1);

答案 3 :(得分:0)

对于那些可能偶然发现我的帖子的人,我在用户benjour的链接下面找到了我的回答。 How do I get the difference between two Dates in JavaScript?