gpt4 book ai didi

javascript - 使用 moment.js,如何将持续时间简化为其最简单的形式?

转载 作者:行者123 更新时间:2023-11-28 05:02:00 30 4
gpt4 key购买 nike

使用 Moment.js 将毫秒转换为持续时间:

moment.duration(dur)

然后输出一个字符串:moment.duration(dur).toISOString()

返回:PT15336H1S

显然 15336 小时对于持续时间来说并不是一个非常有用的数字。

我找到了一个解决方法来做到这一点:moment.duration(moment.duration(d)._data).toISOString()

因为 duration._data 返回一个具有这种精确简化形式的 json 对象,将其传递回构造函数确实正确返回我想要的字符串。示例:

var d = 55209601000; //milliseconds
var initialDuration = moment.duration(d)
console.log(initialDuration._data);
//{
// days:30,
// hours:0,
// milliseconds:0,
// minutes:0,
// months:8,
// seconds:1,
// years:1
//}
console.log(initialDuration.toISOString());
// "PT15336H1S"

var newDuration = moment.duration(initialDuration._data);
console.log(newDuration.toISOString());
// "P1Y8M30DT1S"

很明显这个方法是有效的,但感觉非常hacky。当然有一个 moment.js 函数或者更简洁的方法来做到这一点?

最佳答案

这是 momentjs 中的一个漏洞(恕我直言)。即使在您的持续时间上使用 humanize() 也会给出不太具体的 2 年

这两个 GitHub 问题中有更多详细信息:

  1. https://github.com/moment/moment/issues/463

  2. https://github.com/moment/moment/issues/1048

流行的观点似乎只是安装和使用这个插件:

https://github.com/jsmreese/moment-duration-format

关于javascript - 使用 moment.js,如何将持续时间简化为其最简单的形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42079230/

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