Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将timespan字符串解析为小时,分钟?_Javascript_Regex_Parsing_Timespan - Fatal编程技术网

Javascript 如何将timespan字符串解析为小时,分钟?

Javascript 如何将timespan字符串解析为小时,分钟?,javascript,regex,parsing,timespan,Javascript,Regex,Parsing,Timespan,我有一个字符串“P18DT5H2M3S”,意思是:18天5小时2分3秒 我必须将这个字符串解析为小时和分钟。我应该使用正则表达式还是拆分或substr等 (关于这一点)你想用什么就用什么 下面是使用带有正则表达式的split方法的示例 var res=“P18DT5H2M3S”; var标记=res.split(/[A-Z]+/); //var str=“D:”+token[1]+“H:”+tokens[2]+“M:”+tokens[3]+“S:”+tokens[4]; 警报(“D:+toke

我有一个字符串“P18DT5H2M3S”,意思是:18天5小时2分3秒

我必须将这个字符串解析为小时和分钟。我应该使用正则表达式还是拆分或substr等


(关于这一点)

你想用什么就用什么

下面是使用带有正则表达式的split方法的示例

var res=“P18DT5H2M3S”;
var标记=res.split(/[A-Z]+/);
//var str=“D:”+token[1]+“H:”+tokens[2]+“M:”+tokens[3]+“S:”+tokens[4];
警报(“D:+tokens[1]+“H:+tokens[2]+“M:+tokens[3]+“S:+tokens[4])我找到了这个页面:

所以当我添加到这个js中时

我可以皈依 持续时间=力矩.持续时间.fromIsoduration('P18DT5H2M3S'); 持续时间。\u可以使用数据
它有天、小时、分钟,所以我接受了@chandil03的答案,并对其进行了调整,以返回HH:MM:SS格式

var stamp=“PT2H10M13S”
//剥去包皮
邮票=邮票分割(“PT”)[1];
//在每个字符处拆分
var标记=stamp.split(/[A-Z]+/);
//如果缺少任何部分时间,请用空字符串填写。
//例如我们想要的“13S”[“”、“”、“”13、“”]
对于(变量i=0;i<4-stamp.length;i++){
代币。取消移位(“”);
}
//这里我们添加逻辑来填充需要0前缀的值。
var stampFinal=tokens.map(函数(t){
如果(t.长度<2){
如果(!isNaN(数字(t))){
返回(“0”+数字(t).toString());
}
}
返回t;
});
//弹出最后一个元素,因为它是额外元素。
stampFinal.pop();

console.log(stampFinal.join(“:”)请根据inoabrian找到我的解决方案

function fromString(timeSpan) {
    var hours = 0;
    var minutes = 0;
    var seconds = 0;
    if (timeSpan != null && typeof (timeSpan) == 'string' && timeSpan.indexOf('PT') > -1) {
        timeSpan = timeSpan.split("PT")[1].toLowerCase();
        var hourIndex = timeSpan.indexOf('h');
        if (hourIndex > -1)
        {
            hours = parseInt(timeSpan.slice(0, hourIndex));
            timeSpan = timeSpan.substring(hourIndex + 1);
        }

        var minuteIndex = timeSpan.indexOf('m');
        if (minuteIndex > -1)
        {
            minutes = parseInt(timeSpan.slice(0, minuteIndex));
            timeSpan = timeSpan.substring(minuteIndex + 1);
        }

        var secondIndex = timeSpan.indexOf('s');
        if (secondIndex > -1)
            seconds = parseInt(timeSpan.slice(0, secondIndex));

    }
    return [hours, minutes, seconds];
}

除非我弄错了,否则这个字符串是一个持续时间。也就是说,使用支持此标准的库,例如。是。我找到了这个链接。非常感谢你