我首先要说的是在发布之前我在这个论坛中查看了多个主题。无法找到我的解决方案:(
问题:在尝试使用两个文本框中的时间戳找到两个日期之间的差异时收到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));
}
答案 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)
您可以将日期转换为毫秒,获取差异并获取日期。
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?