PHP: Wie konvertiert man die Zeichenkettenlänge in das ISO 8601 Format? (dh. "30 Minuten" bis "PT30M")

8

Es gibt viele Fragen, wie man das anders macht ( von diesem Format umwandeln), aber ich kann nichts finden, wie man es im ISO 8601-Dauerformat in PHP ausgeben kann.

Ich habe also eine Menge Duration-Strings in einem für Menschen lesbaren Format - ich möchte sie im Format ISO 8601 konvertieren, um die Dauer für HTML5-Mikrodaten zu drucken. Im Folgenden finden Sie ein Beispiel für einige der eingehenden Zeichenfolgen und wie sie formatiert werden sollen.

%Vor%

Sie bekommen die Idee.

Ich kann die Zeichenfolge in PHP in ein Intervall-Objekt schieben:

%Vor%

Aber es scheint keine Ausgabeoption nach ISO 8601 zu geben - wie soll ich das angehen?

Danke allen.

    
Chris 09.11.2012, 02:12
quelle

2 Antworten

13

Ich würde es zuerst in eine Zahl umwandeln und dann damit arbeiten.

Verwenden Sie zuerst strtotime() :

%Vor%

Dann können Sie es für die Dauer analysieren und im PnYnMnDTnHnMnS -Format ausgeben. Ich würde die folgende Methode verwenden (inspiriert von Ссылка ):

%Vor%

Das Ergebnis: Ссылка

    
Eric 09.11.2012, 02:56
quelle
4

Hier ist eine vereinfachte Version von Erics time_to_iso8601_duration() -Funktion. Es verliert nicht die Präzision (365 Tage Approximation eines Jahres) und ist etwa 5x schneller. Die Ausgabe ist weniger hübsch, aber immer noch ISO 8601 kompatibel nach dieser Seite.

%Vor%     
Karolis 23.11.2016 10:08
quelle

Tags und Links