格式两次之间的差异(hh:mm:ss)

时间:2013-12-16 07:00:34

标签: javascript node.js datetime momentjs

我有两次,说:

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

我希望在相同格式的这两次之间有两个评估差异。像上面的结果一样必须是

t3= t2 - t1;  // 15:10:43 

这样做的方法是什么?

4 个答案:

答案 0 :(得分:9)

如果您需要处理时间,强烈建议您在项目中加入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

答案 1 :(得分:4)

我也会选择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());
}

答案 2 :(得分:1)

试试这个

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")

答案 3 :(得分:1)

我还使用了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());