【问题标题】:ISO duration with Java scriptJavascript 的 ISO 持续时间
【发布时间】:2013-03-03 19:57:28
【问题描述】:

我为这个问题道歉,因为我已经发布了一个类似的问题,但我想知道如何进行以下转换:

PT11H9M38.7876754S

我想禁用秒,只显示小时和分钟 11:09

当我有时间显示从 1 到 9 的分钟时,我想在数字前面添加一个 0

Tnx 建议...

【问题讨论】:

标签: javascript iso8601


【解决方案1】:

你可以试试这个:

var str = 'PT11H9M38.7876754S'
    match = str.match(/(\d*)H(\d*)M/),
    formatted = match[1] + ':' + (!match[2][1] ? 0 + match[2] : match[2]);

console.log(formatted);  // => 11:09

【讨论】:

    【解决方案2】:
    "PT11H9M38.78767545".replace(/PT(\d+)H(\d+)M.*/,function(m,a,b) {return a+":"+(b.length<2?"0":"")+b;});
    

    单线:p

    【讨论】:

    • 嗯,这就是缩小器所做的。你为什么不格式化你的代码?
    【解决方案3】:

    由于上面所有的 RegExp 内容都很好,所以第三种解决方案在解析方面要贵一些,但您可能正在寻找不同的东西。

    您可以使用split 函数来解析字符串并提取您需要的部分。

    var pt="PT11H9M38.7876754S";
    
    function showtime(s){
        var time = s.split('.');
        var hours = time[0].split('T')[1].split('H')[0];
        var minutes = time[0].split('H')[1].split('M')[0];
        return digitize(hours) + ":" + digitize(minutes) 
    }
    
    function digitize(i){
        return (i>9) ? i : "0" + i; 
    }
    
    
    alert(showtime(pt)); // 11:09
    

    【讨论】:

      猜你喜欢
      • 2013-02-02
      • 1970-01-01
      • 2014-07-16
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      相关资源
      最近更新 更多