2017-02-27 109 views
2

我写的一个小功能来搜索YouTube视频与YouTube API V3
如何使用moment.js

视频时长的像PT2M54S
格式来格式化的YouTube API视频的时间,我想将它转化as 00:02:54使用moment.js

有没有解决方法?

回答

0

以下方法以秒为单位返回持续时间。所以,你可以简单地使用,在moment.js

function getDurationInSecond(youtubeDuration) 
{ 
    var re=/pt([0-9]+)M([0-9]+)S/gi, 
     rex = new RegExp(re), 
     du = rex.exec(youtubeDuration); 
    if (du.length<1) 
     return 0; 
    var s=0; 
    s+= du.length >1 && du[1]? parseInt(du[1], 10) * 60 :0; // adding minute 
    s+= du.length >2 && du[2]? parseInt(du[1], 10) :0; // 
    return s; 
} 

var time='PT2M45S'; 
console.log(getDurationInSecond(time)); 
1

您可以创建一个moment.duration对象,然后使用moment-duration-format插件格式化。该库为持续时间添加了format方法,并具有trim选项,可让您以所询问的格式获取输出。

一个示例代码如下:

var dur = moment.duration('PT2M54S'); 
 
console.log(dur.format('HH:mm:ss', {trim: false})); // 00:02:54
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>

0

我重新创建iOS版YouTube应用,并使用moment + moment-duration-format在视频的右下角创建的运行时间(例如4:05)。

如果你感兴趣,我提供这个效用函数:

import moment from 'moment'; 
import 'moment-duration-format'; 

export default (duration) => moment 
    .duration(duration) 
    .format('h:mm:ss') 
    .padStart(4, '0:0');