Javascript 将毫秒转换为ISO 8601持续时间

Javascript 将毫秒转换为ISO 8601持续时间,javascript,momentjs,duration,iso8601,Javascript,Momentjs,Duration,Iso8601,使用Moment.js将以毫秒为单位的持续时间转换为ISO 8601持续时间的最简单方法是什么 例如: 3600000 milliseconds > PT1H 你可以这样做: // Duration 1 hour var duration = moment.duration(1, 'h'); console.log( duration.asMilliseconds() ) // 3600000 // Convert to ISO8601 duration string consol

使用Moment.js将以毫秒为单位的持续时间转换为ISO 8601持续时间的最简单方法是什么

例如:

3600000 milliseconds > PT1H
你可以这样做:

// Duration 1 hour
var duration = moment.duration(1, 'h');
console.log( duration.asMilliseconds() )   // 3600000

// Convert to ISO8601 duration string
console.log( duration.toISOString() )      // "PT1H"
还有,5分钟,比如:

var duration = moment.duration(5, 'm');
console.log( duration.asMilliseconds() )   // 300000

// Convert to ISO8601 duration string
console.log( duration.toISOString() )      // "PT5M"

由于这是当前搜索如何使用JavaScript将毫秒转换为秒的最佳结果之一,因此对于那些不能或不想使用矩.JS的用户,这里有一种使用vanilla JS的方法

const duration=(ms)=>{
设dt=新日期(ms);
设元素=[
[Y',dt.getUTCFullYear()-1970],
['M',dt.getUTCMonth()],
['D',dt.getUTCDate()-1],
[T',null],
['H',dt.getUTCHours()],
['M',dt.getUTCMinutes()],
['S',dt.getUTCSeconds()]
];
设s=elems.reduce((acc,[k,v])=>{
如果(v){
acc+=v+k;
}else如果(k=='T'){
acc+=k;
} 
返回acc;
}, '');
s=s.endsWith('T')?s.slice(0,-1):s;
返回s?`P${s}`:null;
}
控制台日志(持续时间(110723405000));
//P3Y6M4DT12H30M5S
控制台日志(持续时间(3600000));
//PT1H