Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两次格式差异(hh:mm:ss)_Javascript_Node.js_Datetime_Momentjs - Fatal编程技术网

Javascript 两次格式差异(hh:mm:ss)

Javascript 两次格式差异(hh:mm:ss),javascript,node.js,datetime,momentjs,Javascript,Node.js,Datetime,Momentjs,我有两次,比方说: t1= '05:34:01' ; t2= '20:44:44' ; 我想要两个以相同的格式计算这两次之间的差异。就像上面的结果一样 t3= t2 - t1; // 15:10:43 怎么做?如果您需要处理时间,强烈建议您将其包括在项目中 例如: var t1 = moment('05:34:01', "hh:mm:ss"); var t2 = moment('20:44:44', "hh:mm:ss"); var t3 = moment(t2.diff(t1)).fo

我有两次,比方说:

t1= '05:34:01' ;
t2= '20:44:44' ;
我想要两个以相同的格式计算这两次之间的差异。就像上面的结果一样

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

怎么做?

如果您需要处理时间,强烈建议您将其包括在项目中

例如:

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");
工作

要在中安装momente.js,只需执行以下操作:

npm安装力矩
(或对于全局安装
sudo npm-g安装力矩

然后在Node.js中,像这样包含它:

var moment = require('moment');

编辑:对于24小时时钟,将
hh
更改为
hh

我也会选择
时刻。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());
}
试试这个

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

我还使用了
momentjs
,但使用了
持续时间
,并且得到了正确的时间差:

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());

这个问题可能会帮助你:哦……现在我注意到,我得到的差异是12小时格式。我实际上需要24小时制,就像我在问题中提到的那样。我希望答案是15:10:43,但它返回03:10:43。您能建议如何获得所需的输出吗?只需使用
HH
而不是
HH
@brandonscript,我在运行小提琴时得到
12:10:43
值(JFYI,我在东京)。是否与UTC有关?如果是,我们如何解决?请建议,可能吧。是否尝试为两个力矩对象设置时区?不知道为什么他们不会默认相同的TZ。