【发布时间】:2017-02-07 08:16:59
【问题描述】:
使用 Moment.js 将毫秒转换为持续时间:
moment.duration(dur)
然后输出一个字符串:moment.duration(dur).toISOString()
返回这个:PT15336H1S
显然 15336 小时对于持续时间来说不是一个非常有用的数字。
我找到了解决方法:moment.duration(moment.duration(d)._data).toISOString()
因为duration._data 返回一个这种精确简化形式的 json 对象,
将它传递回构造函数 does 正确地返回了我想要的字符串。
示例:
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 函数或更简洁的方法来做到这一点?
【问题讨论】:
-
“很明显 15336 小时在一段时间内不是一个非常有用的数字。”你想在这里完成什么? toISOString 返回符合 ISO8601 的字符串,它不需要小时/分钟/等不结转en.wikipedia.org/wiki/ISO_8601#Durations
标签: javascript momentjs