所以我正在寻找一个函数来获取两个日期之间的时间跨度,并且我在 SO 上找到了这个答案
Work with a time span in Javascript
但是日期采用这种格式 7/Nov/2012 20:30:00
而我的日期是 7/11/2012 20:30:00
,并且我的值(value)观来自输入
http://jsbin.com/igaruj/47/edit
如果尝试将“Nov”更改为“11”,我会在输出中得到 NaN。我必须转换日期吗?
这是代码。
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
</head>
<body>
<input type="text" id ="start"value="7/Nov/2012 20:30:00" />
<input type="text" id="end" value="20/Nov/2012 19:15:00" />
</body>
</html>
JavaScript
var startDate = document.getElementById("start").value;
var endDate = document.getElementById("end").value;
var date1 = new Date(startDate);
var date2 = new Date(endDate);
var diff = date2.getTime() - date1.getTime();
var days = Math.floor(diff / (1000 * 60 * 60 * 24));
diff -= days * (1000 * 60 * 60 * 24);
var hours = Math.floor(diff / (1000 * 60 * 60));
diff -= hours * (1000 * 60 * 60);
var mins = Math.floor(diff / (1000 * 60));
diff -= mins * (1000 * 60);
var seconds = Math.floor(diff / (1000));
diff -= seconds * (1000);
console.log(days + " days : " + hours + " hours : " + mins + " minutes : " + seconds + " seconds");
最佳答案
使用 20/11/2012 20:30:00 日期格式:
var startDate = "7/11/2012 20:30:00";
var endDate = "20/11/2012 19:15:00";
您得到 NaN 是因为它希望其格式为 mm/dd/yyyy。所以 20 当然是一个无效的月份。交换月份和日期的值,例如:
var parts = startDate.split('/');
startDate = parts[1] + '/' + parts[0] + '/' + parts[2];
// 11/7/2012 20:30:00
var parts = endDate.split('/');
endDate = parts[1] + '/' + parts[0] + '/' + parts[2];
// 11/20/2012 9:15:00
然后进行正常的时间差异工作,它就会起作用:
var date1 = new Date(startDate);
var date2 = new Date(endDate);
var diff = date2.getTime() - date1.getTime();
var days = Math.floor(diff / (1000 * 60 * 60 * 24));
diff -= days * (1000 * 60 * 60 * 24);
var hours = Math.floor(diff / (1000 * 60 * 60));
diff -= hours * (1000 * 60 * 60);
var mins = Math.floor(diff / (1000 * 60));
diff -= mins * (1000 * 60);
var seconds = Math.floor(diff / (1000));
diff -= seconds * (1000);
alert(days + " days : " + hours + " hours : " + mins + " minutes : " + seconds + " seconds");
//12 days 22 hours 45 minutes 0 seconds
关于javascript - 时间跨度 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25786141/