【问题标题】:How to format the duration of YouTube API video using moment.js如何使用 moment.js 格式化 YouTube API 视频的持续时间
【发布时间】:2017-02-27 03:24:35
【问题描述】:

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

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

有什么解决办法吗?

【问题讨论】:

    标签: javascript youtube-api momentjs


    【解决方案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
    【解决方案2】:

    我正在重新创建 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');
    

    【讨论】:

      【解决方案3】:

      以下方法以秒为单位返回持续时间。所以你可以简单地在 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));
      

      【讨论】:

      • 如果持续时间为“PT5S”则不起作用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 2015-10-01
      • 2014-06-09
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      相关资源
      最近更新 更多