Javascript 使用moment.js如何为持续时间指定特定格式

Javascript 使用moment.js如何为持续时间指定特定格式,javascript,momentjs,Javascript,Momentjs,给定API的持续时间为秒数,即duration\u seconds=86485 (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) 我还要确保以下几点: 如果天数为0(00:01:01-持续1分钟1秒),则天数将被修剪 hh:mm:ss从不修剪,1秒显示为00:00:01 我可以这样创建持续

给定API的持续时间为秒数,即
duration\u seconds=86485

(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)
我还要确保以下几点:

  • 如果天数为0(
    00:01:01
    -持续1分钟1秒),则天数将被修剪
  • hh:mm:ss从不修剪,1秒显示为
    00:00:01
我可以这样创建持续时间:

moment.duration(duration_seconds, 'seconds')
人性化功能是不合适的,因为它是近似的。 我也可以用以下方法编写自己的:

duration.get('d')
duration.get('h')
duration.get('m')
duration.get('s')
我似乎找不到一个内置函数,但我认为这是一个显而易见的函数?有什么东西我遗漏了,否则我可以把一个放进瞬间图书馆

这似乎意味着该功能仍然不存在:
也许你可以试试这个

时刻(持续时间)。格式(“DD-MMM-yyy-hh:mm:a”)

尽管您可能需要将秒转换为毫秒。这可以通过说
duration*1000
来实现

从这个答案中可以找到:

插件可以帮助您完成这一任务

//您的输入
var持续时间_秒=86485;
//创建力矩持续时间对象
var duration=时刻持续时间(持续时间为秒,'秒');
//用字符串格式化对象
var formatted=duration.format('h[h]m[m]s[s]');
//在这里显示输出
document.getElementById('output')。innerHTML=格式化


MomentJS有一些插件。一个似乎就是你想要的:谢谢@MikeMcCaughan。我还看到,这个插件经常出现在GitHub问题上,抱怨这个问题。@MikeMcCaughan,这个插件仍然没有真正解决全部问题。如果你有一秒钟,使用格式(“HH:MM:SS”),它仍然显示为“代码>01</代码>”,而不是<> > > 00:0:01 ,那么我猜你的问题的答案是“没有内置函数。你应该考虑向Prim.js或插件提交PR”。我想你指的是
格式
。但如果要执行此操作,则需要使用
矩.utc(持续时间)
(或
矩.unix(持续时间)
,如果不想使用*1000)。如果要表示的时间超过31天,也会出现问题。最后,格式化日期/时间与格式化持续时间是不同的。@MattJohnson啊,谢谢你的拼写检查!有趣的是,我现在不是专业人士,所以我会把这个问题留给更有能力回答这个问题的人。这个答案不合适。我需要处理的是持续时间,而不是时间点。