gpt4 book ai didi

javascript - 如何使用 Moment.js 准确格式化持续时间?

转载 作者:数据小太阳 更新时间:2023-10-29 03:51:18 30 4
gpt4 key购买 nike

给定两个 UTC 格式的日期,我想执行以下操作:

var start = "2014-01-13T06:00:00.0000000Z";
var end = "2014-01-13T14:16:04.0000000Z";

我想得到这两个时间之间经过的确切时间跨度,比如

8h 16m

我试过使用以下方法:

var duration = moment(moment(end) - moment(start)).format('hh[h] mm[m]');

但这不适用于天数。此外,它不适用于天数,因为即使 <24 小时过去了,它们也总是 >=1。

我也试过 twix.js 来获取长度,但它的格式不支持创建上面指定的格式,或者我在它的文档中找不到这样做的方法。基本上,我正在寻找 twix.humanizeLength()精确版本。

Moment.jsa.diff(b) 只提供总持续时间,它可以给我时间跨度的长度,以分钟、小时或天为单位,但不是用余数计算的。

我的当前解决方案是使用diff 创建范围,然后使用模计算余数,但这不是很优雅:

var days = moment(end).diff(start, 'days');
var hours = moment(end).diff(start, 'hours') % 24;
var minutes = moment(end).diff(start, 'minutes') % 60;

var duration = ((days > 0) ? days + 'd ' : '') + ((hours > 0) ? hours + 'h ' : '') + ((minutes > 0) ? minutes + 'm ' : '');

问题moment.jstwix.js 中是否有更聪明的方法来做到这一点,或者我应该采取我的花时间开发我自己的 moment.js 插件?

最佳答案

您可以尝试使用 Durations,但我不确定它们是否具有您正在寻找的功能 http://momentjs.com/docs/#/durations/

此外,您始终可以使用时刻的差异来获得以毫秒为单位的差异,然后根据您的需要对其进行格式化。它与您所做的基本相同,但您只调用一次 diff。

function convertMilliSecondsIntoLegibleString(milliSecondsIn) {

var secsIn = milliSecondsIn / 1000;
var milliSecs = milliSecondsIn % 1000;

var hours = secsIn / 3600,
remainder = secsIn % 3600,
minutes = remainder / 60,
seconds = remainder % 60;


return ( hours + "h: "
+ minutes + "m: "
+ seconds +"s: " + milliSecs + "ms");
}

关于javascript - 如何使用 Moment.js 准确格式化持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21674694/

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