【问题标题】:calculate time difference in HH:mm format以 HH:mm 格式计算时间差
【发布时间】:2025-11-27 23:05:01
【问题描述】:

我有两个HH:mm 格式的时间戳,我需要计算它们之间的差异,表示相同HH:mm 格式的时间间隔。

JavaScript 中是否有任何实用程序可以实现这一点?我尝试使用 Date 对象,但我找不到有用的东西...你能帮帮我吗?

【问题讨论】:

标签: javascript timestamp


【解决方案1】:

类似这样的:

​var t1 = '12:04'.split(':'), t2 = '3:45'​​​​​​​.split(':');
var d1 = new​ Date(0, 0, 0, t1[0], t1[1]),
    d2 = new Date(0, 0, 0, t2[0], t2[1]);
var diff = new Date(d1 - d2);

【讨论】:

  • 我更喜欢这样的东西 code var t1 = jstart.split(":"); var t2 = jstop.split(":"); var min_1 = parseInt(t1[0]) * 60 + parseInt(t1[1]); var min_2 = parseInt(t2[0]) * 60 + parseInt(t2[1]);控制台.log((min_2-min_1)); code
【解决方案2】:

假设 tim1 是一个类似 "09:15" 的字符串,而 tim2 是一个类似 "19:05" 的字符串,那么 tim2 和 tim1 之间的差异可以通过以下 javascript 代码得出:-

var tim1='09:15',tim2='19:05';
var ary1=tim1.split(':'),ary2=tim2.split(':');
var minsdiff=parseInt(ary2[0],10)*60+parseInt(ary2[1],10)-parseInt(ary1[0],10)*60-parseInt(ary1[1],10);
alert(String(100+Math.floor(minsdiff/60)).substr(1)+':'+String(100+minsdiff%60).substr(1));

【讨论】:

    【解决方案3】:

    你可以试试这个

    https://github.com/layam/js_humanized_time_span

    并格式化输出?

    或者如果使用jquery你可以尝试

    http://timeago.yarp.com/

    【讨论】:

      【解决方案4】:

      您可以将两个日期相减,结果将以毫秒为单位。

      来自Mozilla Developer Network:

      // using static methods
      var start = Date.now();
      // the event you'd like to time goes here:
      doSomethingForALongTime();
      var end = Date.now();
      var elapsed = end - start; // time in milliseconds
      

      由于 Date 有一个接受毫秒作为参数的构造函数,你可以通过这样做将它重新转换为 Date

      var difference = new Date(elapsed);
      //If you really want the hours/minutes, 
      //Date has functions for that too:
      var diff_hours = difference.getHours();
      var diff_mins = difference.getMinutes();
      

      【讨论】:

      • 如何将HH:mm 字符串解析为Date 对象?
      • 你读过 MDN 日期 API 吗?有很多方法,但首先想到两个:使用 new Date(year, month, day [, hour, minute, second, millisecond]) 构造函数,或者创建一个新的 Date 并使用 setHours & setMinutes
      • 我如何获得 date = "2016/03/01 11:00" 到 date ="2016/03/06 11:00" 之间的时差
      • 我建议改用 getUTCHours() 和 getUTCMinutes() 来处理时区问题。
      最近更新 更多