javascript - 时间跨度 JavaScript

标签 javascript html

所以我正在寻找一个函数来获取两个日期之间的时间跨度,并且我在 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

<强> See the DEMO here

关于javascript - 时间跨度 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25786141/

相关文章:

css - HTML5 视频在播放前闪烁白色?

html - span inside anchor 不起作用,有什么想法吗?

javascript - 如何使用 Jquery AJAX 调用 MVC Action 然后在 MVC 中提交表单?

jquery - 通过链接显示/隐藏带有纯 JQuery 的 Div

javascript - 如何保护 HTML5+PhoneGap 移动应用程序中的数据?

javascript - 每当我更改 `geometry.setDrawRange` 属性时,同步就会停止

html - 如何在 WP7 - Phonegap 中播放嵌入视频?

html - 将空查询字符串传递给 URL 是一种错误的形式吗?

javascript - 复杂排序html表

javascript - 滚动时 float 导航栏宽度