【问题标题】:subtracting military time in javascript [duplicate]在javascript中减去军事时间[重复]
【发布时间】:2013-01-20 16:31:27
【问题描述】:

可能重复:
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 方法,但这听起来不像我需要的。

提前致谢。

【问题讨论】:

  • 奇怪的是,当您撰写此问题时,您并没有被告知许多其他问题......这是一个常见问题解答
  • 如果您想使用Date 对象,请查看setHours/setMinutes
  • check time difference in javascript 中的方法是我所需要的。只是没有搜索正确的术语。

标签: javascript time subtraction


【解决方案1】:

如果没有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);
}

【讨论】:

  • 谢谢,我会记住的,我最终设置了日期对象,就像question 中的答案一样,然后减去毫秒值并将它们转换为小时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多