格式为(小时:分钟:秒)的两个时间之间的差异

7

我有两个时间,比如说:

t1= '05:34:01' ;
t2= '20:44:44' ;

我希望你能够比较这两个相同格式的时间之间的差异。例如,上面的结果应该是:
t3= t2 - t1;  // 15:10:43 

如何做到这一点?


这个问题可能会对你有所帮助:https://dev59.com/M3I-5IYBdhLWcg3wNle1 - doptimusprime
4个回答

13

如果你需要处理时间,我强烈建议在你的项目中包含 moment.js

例如:

var t1 = moment('05:34:01', "hh:mm:ss");
var t2 = moment('20:44:44', "hh:mm:ss");
var t3 = moment(t2.diff(t1)).format("hh:mm:ss");

使用 jsFiddle 进行编程。

Node.js 中安装 moment.js,只需执行以下操作:

npm install moment (或进行全局安装 sudo npm -g install moment

然后在你的 Node.js 代码中,像这样引入它:

var moment = require('moment');

编辑:要使用24小时制,请将 hh 改为 HH


哦,现在我注意到了,我得到的差异是在12小时制中。实际上,我需要24小时制,就像我在问题中提到的那样。我希望答案是15:10:43,但它返回的是03:10:43。你能建议如何获得所需的输出吗? - Tirthankar Kundu
仅需使用HH而不是hh - Matt Johnson-Pint
@brandonscript,当我运行这个fiddle时(顺便说一下,我在东京),我得到了12:10:43的值。这与UTC有关吗?如果是,我们该如何解决?请给出建议。 - Vikasdeep Singh
可能是这样。尝试为两个moment对象设置时区?不确定为什么它们不会默认为相同的时区。 - brandonscript

5
我会选择使用 moment.js,但你也可以这样做:
function time_diff(t1, t2) {
   var parts = t1.split(':');
   var d1 = new Date(0, 0, 0, parts[0], parts[1], parts[2]);
   parts = t2.split(':');
   var d2 = new Date(new Date(0, 0, 0, parts[0], parts[1], parts[2]) - d1);
   // this would also work
   // d2.toTimeString().substr(0, d2.toTimeString().indexOf(' '));
   return (d2.getHours() + ':' + d2.getMinutes() + ':' + d2.getSeconds());
}

3

我也使用了 momentjs,但是在使用 duration 时可以得到正确的时间差:

var t1 = moment('05:34:01', "HH:mm:ss");
var t2 = moment('20:44:44', "HH:mm:ss");

var start_date = moment(t1, 'YYYY-MM-DD HH:mm:ss');
var end_date = moment(t2, 'YYYY-MM-DD HH:mm:ss');
var duration = moment.duration(end_date.diff(t1));

var t3 = duration.hours() + ":" + duration.minutes() + ":" + duration.seconds();
alert(t3);
console.log(duration.hours());
console.log(duration.minutes());
console.log(duration.seconds());

2

试一试

function time_diff(t1, t2) 
{
  var t1parts = t1.split(':');    
  var t1cm=Number(t1parts[0])*60+Number(t1parts[1]);

  var t2parts = t2.split(':');    
  var t2cm=Number(t2parts[0])*60+Number(t2parts[1]);

  var hour =Math.floor((t1cm-t2cm)/60);    
  var min=Math.floor((t1cm-t2cm)%60);    
  return (hour+':'+min+':00'); 
}

time_diff("02:23:00","00:45:00")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接