使用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"
显然这种方法很有效,但感觉非常黑客。当然有一个时刻.js功能或更清洁的方式来做到这一点?
答案 0 :(得分:0)
这是momentjs
中的一个洞(imho)。即使在您的持续时间内使用humanize()
也会给出一个不太具体的2 years
。
这两个GitHub问题有更详细的内容: