gpt4 book ai didi

node.js - 2 个时间戳之间的小时差错误 (hh :mm:ss)

转载 作者:太空宇宙 更新时间:2023-11-03 22:30:49 24 4
gpt4 key购买 nike

使用 moment.js,我想获取两个时间戳之间的时间差。

执行以下操作,

var prevTime = moment('23:01:53', "HH:mm:SS");
var nextTime = moment('23:01:56', "HH:mm:SS");

var duration = moment(nextTime.diff(prevTime)).format("HH:mm:SS");

我得到这个结果:

01:00:03

为什么会有 1 小时的时差?秒和分钟似乎效果很好。

完成此操作后,我尝试了以下操作:

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);
return (d2.getHours() + ':' + d2.getMinutes() + ':' + d2.getSeconds());
}

var diff = time_diff('23:01:53','23:01:56');

输出为:1:0:3

最佳答案

您在这里遇到的问题是,当将 nextTime.diff() 放入 moment 构造函数时,您实际上是在向 moment() 提供毫秒,并且它会尝试将其解释为时间戳,这就是为什么您没有得到预期结果的原因。

除了花时间并手动重建您正在寻找的内容之外,没有“好方法”来获得您想要的结果:

var dur = moment.duration(nextTime.diff(prevTime)); 
var formattedDuration = dur.get("hours") +":"+ dur.get("minutes") +":"+ dur.get("seconds");

还有一个更优雅的版本,可以在输出中提供零填充:

var difference = nextTime.diff(prevTime);
var dur = moment.duration(difference);
var zeroPaddedDuration = Math.floor(dur.asHours()) + moment.utc(difference).format(":mm:ss");

应该让你更快乐!

编辑:我注意到您使用 HH:mm:SS 作为格式,但您应该使用 HH:mm:ss。 'SS' 将为您提供 0 到 999 之间秒的小数值,这不是您想要的。

关于node.js - 2 个时间戳之间的小时差错误 (hh :mm:ss),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37431308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com