日期时间之间的差异

2024-01-08

我这里有一些代码可以计算两个日期时间之间的小时差。这里有点不知所措。代码时好时坏,我不知道为什么。

var date = tr.find('td:eq(10) input').val();
var time = tr.find('td:eq(10) option:selected').val();
var d1 = parseDate(date,time);
date = tr.find('td:eq(11) input').val();
time = tr.find('td:eq(11) option:selected').val();
var d2 = parseDate(date,time);
var diff = d2.getTime() - d1.getTime();
var hoursTd = tr.find('td:eq(12)');
hoursTd.html((diff/3600000).toFixed(2));

date and time正确填充,从 jQuery UI 日期选择器和一个简单的下拉列表中获取值 2:30 pm、2:45 pm、3:00 pm 等。当日期相同时它工作正常,但有时会增加 10 的大小当日期不相同时。例如:

01/11/2011 10:30 am - 01/11/2011 11:00 am = 0.50(正确)

01/10/2011 10:30 am - 01/11/2011 11:00 am = 24.50(正确)

01/09/2011 10:30 am - 01/11/2011 11:00 am = 264.50(错误)

01/08/2011 10:30 am - 01/11/2011 11:00 am = 264.50(错误)

01/07/2011 10:30 am - 01/11/2011 11:00 am = 96.50(正确)

编辑一下,天啊,对不起。不包括 parseDate 函数。

// Date m/d/Y Time h:m a
function parseDate(date,time) {

date = date.split("/");
time = time.split(" ");
hm = time[0].split(':');
if (parseInt(hm[0]) == 12) {
    hm[0] = 0;
}
if (time[1] == 'pm') {
    hm[0] = parseInt(hm[0]) + 12;
} else {
    hm[0] = parseInt(hm[0]);
}
return new Date(
    parseInt(date[2]), parseInt(date[0])-1, parseInt(date[1]),
    hm[0], parseInt(hm[1])
);
}

编辑一下,好的,所以parseInt是罪魁祸首。parseInt("09")返回 0。也是如此"08"。奇怪的是,parseInt("07")返回 7。并且 1-6 也正确返回。有人告诉Javascript。


问题是 date[1] 上的 parseInt() 使用前导零。

return new Date(
    parseInt(date[2]), parseInt(date[0])-1, parseInt(date[1]),
    hm[0], parseInt(hm[1])
);

当您传递像 01/09/2011 这样的日期时,09 将被解析为 0,而不是 9。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

日期时间之间的差异 的相关文章

随机推荐