YouTube API v3: Duration Format

Dustin84

Erfahrenes Mitglied
Hallo,

wenn ich mit der YouTube API 3 die duration hole, hat es das ISO 8601 Format.

Das sieht so aus:
Code:
PT3M22S

Das ist ja quasi schon die Zeitangabe, 3 Minuten und 22 Sekunden.

Ich formatiere es so:
Javascript:
response.items[0].contentDetails.duration.replace("PT","").replace("H",":").replace("M",":").replace("S","")

Gewünschtes Ausgabeformat: M:SS (Minute und Sekunden immer 2 stellig)

Mein Code hat 2 Probleme:
1. ) Geht ein Video genau 4 Minuten lautet das ISO Date PT4M und es wird 4: ausgegeben. Sollte aber 4:00 sein.

2.) Geht ein Video 3:09 lauetet das ISO Date PT4M9S und es wird 3:9 ausgegeben. Sollte aber 3:09 sein.

Hat jemand eine Idee?

Gruß
D.
 
Anstatt replace nutze zB split (als einfache Lösung, oder RegEx als etwas schönere Lösung) und hole dir die einzelnen Werte in Variablen, sodass du diese nachher überprüfen kannst.
z.B.
"PT3M22S".split("M") gibt ein array mit zwei Werten: "PT3", "22S". Nun kannst du zB überprüfen ob das Array wirklich zwei Werte hat, wenn der String nämlich "PT3M" war gibts nur ein Wert, und dann kannst du deine Variable für Sec. mit "00" abfüllen. Das gleiche müsstest du wohl auch mit Minuten machen? Oder ist ein 30sec Video "PT0M30S" ?

Das zweite Problem, wenn du die Sekunden nun in einer Variable hast kannst du die Länge (.length) dieser Variable prüfen und falls nur 1 Zeichen ein 0 anhängen.

Ansonsten wenn du eine fertige Lösung willst, nutze doch einfach die zweite Antwort von stackoverflow wo du dein Code her hast ;)
http://stackoverflow.com/a/19094191/2481955
 
ah doch noch eine Frage:
Wenn das Video genau 4 Minuten geht, erhalte ich als Ausgabe 04, sollte aber 04:00 sein.

Ich nutze das Script:
Javascript:
                        array=youTubeDuration.match(/(\d+)(?=[MHS])/ig)||[];
                        var duration=array.map(function(item){
                                if(item.length<2) return '0'+item;
                                return item;
                        }).join(':');

Mit RegEx kenne ich mich leider gar nicht aus. :-(
 

Neue Beiträge

Zurück