【问题标题】:How Can Parse Youtube Duration to Date?如何解析迄今为止的 Youtube 持续时间?
【发布时间】:2019-04-30 23:18:21
【问题描述】:

我无法将 Youtube 持续时间解析为日期或日期时间,我搜索并访问了许多网站,但我无法解析 youtube 字符串持续时间

Youtube 时长示例为:PT15M33S

Please click for youtube api documentation

【问题讨论】:

  • 看起来 Dart 没有内置对解析持续时间的支持(请参阅 this issue)。您可以根据自己的目的调整this answer

标签: dart youtube-data-api


【解决方案1】:

ISO 8601 durations 的格式为 P[n]Y[n]M[n]DT[n]H[n]M[n]S

例子:

20 秒:

PT20.0S

一年3个月3天4小时5分10秒:

P1Y3M3DT4H5M10S

很遗憾,dart 没有给 parser api Duration class 所以你必须自己解析并输入 Duration 并转换为 Datatime

你可以试试Match-class

String durationString = "P2Y5M3W4DT5H4M2S";
String regxPattern= "^P(\\d+Y)?(\\d+M)?(\\d+W)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+S)?)?\$";

  print(regxPattern);

RegExp re = new RegExp(regxPattern);

if (re.hasMatch(durationString)) {

   for (var m in re.allMatches(durationString)) {


     print("total:"+m.group(0));
     print("Y:"+m.group(1));
     print("M:"+m.group(2));
     print("W:"+m.group(3));
     print("D:"+m.group(4));
     print("Time:"+m.group(5));
     print("H:"+m.group(6));
     print("M:"+m.group(7));
     print("S:"+m.group(8));
     Duration fastestMarathon = new Duration(hours:m.group(6), 
                                             minutes:m.group(7), 
                                             second,m.group(8));

   }

}



【讨论】:

    【解决方案2】:

    包装了一个小包裹来促进这一点:

    import { parse, serialize } from 'tinyduration';
     
    // Basic parsing
    const durationObj = parse('P1Y2M3DT4H5M6S');
    assert(durationObj, {
        years: 1,
        months: 2,
        days: 3,
        hours: 4,
        minutes: 5,
        seconds: 6
    });
     
    // Serialization
    assert(serialize(durationObj), 'P1Y2M3DT4H5M6S');
    

    使用npm install --save tinydurationyarn add tinyduration 安装

    见:https://www.npmjs.com/package/tinyduration

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-02
      • 2018-08-01
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多