如何使用moment.js格式化YouTube API视频的持续时间

时间:2017-02-27 03:24:35

标签: javascript youtube-api momentjs

我使用YouTube API v3发布了一个小功能来搜索YouTube中的视频

视频时长的格式,如PT2M54S
我想将其转换为00:02:54使用moment.js

有任何解决方案吗?

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

我正在重新创建YouTube iOS应用,并使用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');

答案 2 :(得分: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));