0

可能重复:
检查 javascript中的
时差 计算javascript 中的时差

这是我从表单输入中提取时间的代码块,

start = group.find('.startTime').val().replace(':',''),     // like 0100
end = group.find('.endTime').val().replace(':',''),         // like 0300
timeDiff = (end - start) < 0 ? (end - start + 2400) : (end - start),

timeDiff考虑到经过午夜的时间,所以如果我尝试从 0100 中减去 2300 并得到 -2200,它会加上 2400 以获得 0200 或 2 小时的正确差异。

我的问题出现在我尝试减去一些时间,例如 2100 - 2030(这应该给我半小时),但因为它只是一个原始数字,我得到了 70 的实际差异。我的问题是如何正确减去这些?如果我需要将其转换为日期或时间对象,那么这样做的正确方法是什么?我研究了该setTime方法,但这听起来不像我需要的。

提前致谢。

4

1 回答 1

0

如果没有Date对象(对于仅时间值来说似乎没问题),您应该将时间转换为分钟或小时 - 始终只使用一个单位进行计算(尤其不要将它们混合成一个代表六十进制的十进制数)!

function toTime(string) {
    var m = string.match(/(\d{2}):({\d2})/);
    return m && 60 * parseInt(m[1], 10) + parseInt(m[2], 10),
}
var start = toTime( group.find('.startTime').val() ),
    end = toTime( group.find('.endTime').val() );

var timeDiff = Math.abs(end - start);

function fromTime(minutes) {
    var m = minutes % 60,
        h = (minutes - m) / 60;
    return ("0"+h).substr(-2)+":"+("0"+m).substr(-2);
}
于 2013-01-20T17:22:31.650 回答