Convertir le format de temps ISO 8601 en durée de temps normale

j'ai une chaîne de durée"PT1M33S". Je voudrais obtenir un résultat dans le format suivant -> 01:33 Quelqu'un peut-il me dire comment le faire en utilisant js ou jquery??

5
demandé sur user2091061 2013-09-30 15:27:47

4 réponses

cela ne semble pas être une forme de temps, juste la durée de la vidéo.

     ------ 33 Seconds
    ''
PT1M33S
  '------- 1 Minute

H - Heures

M-Minutes

S - Secondes

alors essayez ceci

var timeD = "PT1M33S";
var formattedTime = timeD.replace("PT","").replace("H",":").replace("M",":").replace("S","")
alert(formattedTime);

Violon par exemple, peut être fait avec un simple regex trop.

J'espère que vous comprenez.

12
répondu Praveen 2013-09-30 12:06:34

vous pouvez faire correspondre les chiffres et les coller au format -

var string= "PT1M33S", 
array=string.match(/(\d+)(?=[MHS])/ig)||[]; 

var formatted=array.map(function(item){
    if(item.length<2) return '0'+item;
    return item;
}).join(':');

formatted

/ * valeur retournée: (chaîne de caractères) 04: 33 * /

4
répondu kennebec 2013-09-30 12:22:26

j'utilise personnellement ceci:

function parseDuration(e){var n=e.replace(/D|H|M/g,":").replace(/P|T|S/g,"").split(":");if(1==n.length)2!=n[0].length&&(n[0]="0"+n[0]),n[0]="0:"+n[0];else for(var r=1,l=n.length-1;l>=r;r++)2!=n[r].length&&(n[r]="0"+n[r]);return n.join(":")}

même code formaté:

function parseDuration(e){
    var n = e.replace(/D|H|M/g,":").replace(/P|T|S/g,"").split(":");

    if(1 == n.length)
        2!=n[0].length && (n[0]="0"+n[0]),n[0]="0:"+n[0];
    else 
        for(var r=1, l=n.length-1; l>=r;r++)
            2!=n[r].length && (n[r]="0"+n[r]);

    return n.join(":")
}
1
répondu Ben 2017-03-12 20:20:57

j'ai aimé cette réponse car elle était simple, cependant, elle donne des résultats étranges si les minutes ou les secondes sont inférieures à 10, par exemple, 10:04 est retourné comme 10:4.

J'ai donc ajouté quelques fonctions simples pour analyser et réassembler la chaîne de temps:

function formatTimeSeg(segment) {
    newSegment = segment;
    segLength = segment.length;
    if(segLength==1){
        newSegment = '0'+segment;
    }
return newSegment;
}
extractedTime = duration.replace("PT","").replace("H",":").replace("M",":").replace("S","")
extractedTime = extractedTime.split(':');
timeLength = extractedTime.length;
switch(timeLength) {
    case 3:
        hours=extractedTime[0];minutes=extractedTime[1];seconds=extractedTime[2];
        minutes = formatTimeSeg(minutes);
        seconds = formatTimeSeg(seconds);
        formattedTime = hours+':'+minutes+':'+seconds;
    break;
    case 2:
        minutes=extractedTime[0];seconds=extractedTime[1];
        minutes = formatTimeSeg(minutes);
        seconds = formatTimeSeg(seconds);
        formattedTime = minutes+':'+seconds;
    break;
    case 1:
        seconds=extractedTime[0];
        seconds = formatTimeSeg(seconds);
        formattedTime = '0:'+seconds;
    break
}
0
répondu Frank Eastes 2015-05-10 20:34:01