【发布时间】:2018-11-29 06:01:01
【问题描述】:
我正在用 node js 编写一个服务。我已经将 moment js 用于与时间相关的解决方案。 我想计算两次之间的时间差。这是我的 sn-p,它没有给我想要的输出:
var now = moment('11:08:30',"H:mm:ss");
var prev = moment('11:07:30', "H:mm:ss");
var result = moment(now.diff(prev)).format("H:mm:ss");
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.4.0/moment.min.js"></script>
根据我的理解,我认为 11:08:30 和 11:07:30 之间的差异应该是 00:01:00,但输出是 5:31:00。我不明白为什么会这样。如何修复它以使输出为 00:01:00 即 1 分钟?
【问题讨论】:
-
now.diff(prev)返回以毫秒为单位的差异,在您的情况下为60000。使用moment(60000)创建一个日期60000自 1970 年 1 月 1 日 UTC 以来的毫秒数。如果您现在调用.format("H:mm:ss"),那么H将受到系统时区的影响。因此,您需要确保在格式化时使用 utc。 -
所以只需将
moment(now.diff(prev)).format("H:mm:ss")更改为moment.utc(now.diff(prev)).format("H:mm:ss"),如answer 中所述,您将获得输出0:01:00 -
嘿,非常感谢,这真的解决了问题:)
标签: javascript node.js datetime momentjs