在javascript中减去军事时间

时间:2013-01-20 16:31:27

标签: javascript time subtraction

  

可能重复:
  check time difference in javascript
  calculate time difference in 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方法,但这听起来并不像我需要的那样。

提前致谢。

1 个答案:

答案 0 :(得分: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);
}