我有一个函数可以计算两个日期/时间之间的时间,但我对返回有一个小问题。
以下是我收集信息的方式。
开始日期 开始时间 结束日期 结束时间 小时
这是计算日期和时间的函数:
function calculate (form) {
var d1 = document.getElementById("date1").value;
var d2 = document.getElementById("date2").value;
var t1 = document.getElementById("time1").value;
var t2 = document.getElementById("time2").value;
var dd1 = d1 + " " + t1;
var dd2 = d2 + " " + t2;
var date1 = new Date(dd1);
var date2 = new Date(dd2);
var sec = date2.getTime() - date1.getTime();
if (isNaN(sec)) {
alert("Input data is incorrect!");
return;
}
if (sec < 0) {
alert("The second date ocurred earlier than the first one!");
return;
}
var second = 1000,
minute = 60 * second,
hour = 60 * minute,
day = 24 * hour;
var hours = Math.floor(sec / hour);
sec -= hours * hour;
var minutes = Math.floor(sec / minute);
sec -= minutes * minute;
var seconds = Math.floor(sec / second);
var min = Math.floor((minutes * 100) / 60);
document.getElementById("result").value = hours + '.' + min;
}
如果我在两个日期字段的今天日期,然后在第一个时间字段中的14:30和第二个时间字段中的15:35,结果显示为1.8,它应该是1.08
我没有写这个功能,但我想知道是否有人可以告诉我如何进行这项改变?
谢谢。
答案 0 :(得分:1)
如果我理解正确,你遇到的唯一问题是分钟没有用零填充。如果是这种情况,您可以使用这个小技巧填充min
的值:
("00" + min).slice(-2)
答案 1 :(得分:0)
验证分钟数是否小于10,如果是,则在前面添加额外的零。遵循类似的方法几秒钟。
答案 2 :(得分:0)
我不明白为什么15:35 - 14:30 = 1.08有用吗?
请改为尝试:
function timediff( date1, date2 ) {
//Get 1 day in milliseconds
var one_day=1000*60*60*24;
// Convert both dates to milliseconds
var date1_ms = date1.getTime();
var date2_ms = date2.getTime();
// Calculate the difference in milliseconds
var difference_ms = date2_ms - date1_ms;
//take out milliseconds
difference_ms = difference_ms/1000;
var seconds = Math.floor(difference_ms % 60);
difference_ms = difference_ms/60;
var minutes = Math.floor(difference_ms % 60);
difference_ms = difference_ms/60;
var hours = Math.floor(difference_ms % 24);
var days = Math.floor(difference_ms/24);
return [days,hours,minutes,seconds];
}
function calculate (form) {
var d1 = document.getElementById("date1").value;
var d2 = document.getElementById("date2").value;
var t1 = document.getElementById("time1").value;
var t2 = document.getElementById("time2").value;
var dd1 = d1 + " " + t1;
var dd2 = d2 + " " + t2;
var date1 = new Date(dd1);
var date2 = new Date(dd2);
var diff = timediff(date1, date2);
document.getElementById("result").value = diff[1] + ':' + diff[2];
}