Использование Moment.js конвертировать миллисекунды длительности:Использование 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 или более чистый способ сделать это?
«Очевидно, что 15336 часов не очень полезно для продолжительности». Что вы пытаетесь сделать здесь? toISOString возвращает строку, совместимую с ISO8601, которая не требует, чтобы часы/минуты/и т. д. не переносили https://en.wikipedia.org/wiki/ISO_8601#Durations – Nick