使用Javascript的ISO持续时间

时间:2013-03-03 19:57:29

标签: javascript iso8601

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

PT11H9M38.7876754S

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

当我有时间从1到9显示分钟时,我想在数字

前添加0

Tnx建议......

3 个答案:

答案 0 :(得分:4)

你可以试试这个:

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

答案 1 :(得分:2)

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

One-liner:p

答案 2 :(得分:1)

由于所有优秀的 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