给定来自API的持续时间为duration_seconds = 86485
的API。
(1天,0小时,1分钟,1秒)
我打算使用moment.js将其转换为格式化的持续时间,如下所示:
1. {d} {hh}:{mm}:{ss} (1d 00:01:01)
2. {d}d {hh}h m{mm} s{ss} (1d 04h 30m 23s)
我还想确保以下内容:
00:01:01
- 1分钟1秒)00:00:01
。我可以像这样创建持续时间:
moment.duration(duration_seconds, 'seconds')
人性化功能不适合,因为它近似。 我也可以自己编写:
duration.get('d')
duration.get('h')
duration.get('m')
duration.get('s')
我似乎无法找到内置功能,但我认为这将是一个明显的功能?是否有我遗漏的东西,否则我可以将其中一个进入片刻库。
这似乎意味着该功能仍然不存在: Using moment.js, How can I simplify a duration to its most simplified form?
答案 0 :(得分:2)
moment-duration-format插件可以帮助您解决此问题。
Point.getZ()
// your input
var duration_seconds = 86485;
// create a moment-duration object
var duration = moment.duration(duration_seconds, 'seconds');
// format the object with a string
var formatted = duration.format('h[h] m[m] s[s]');
// displaying the output here
document.getElementById('output').innerHTML = formatted;
请注意,默认情况下,它会省略不相关的单位,因此如果您的输入为3,则只会说<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>
<div id="output" />
,而不是"3s"
。
如果要更改此行为,请设置"0h 0m 3s"
,per the documentation。例如,要获取您在评论中提到的格式,请使用:
trim:false
答案 1 :(得分:0)
也许你可以试试这个?
moment(duration).format("DD MMM YYYY hh:mm: a")
虽然您可能需要将秒数转换为毫秒数。这可以通过说duration * 1000
来完成。