Parse und erstelle ISO 8601 Datums- und Zeitintervalle, wie PT15M in PHP

Eine Bibliothek und ein Webservice, die ich verwende, kommunizieren Zeitintervalle in ISO 8601-Format:PnYnMnDTnHnMnS. Ich möchte solche Formate in Sekunden konvertieren. Und umgekehrt. Sekunden sind viel einfacher zu berechnen.

Beispiele für Intervallwerte sind:

PT1M oder PT60S (1 Minute) PT1H, PT60M oder PT3600S (1 Stunde)

Ich brauche zwei Funktionen: Analysiere von solchen Werten in Sekunden:iso8601_interval_to_seconds() und von Sekunden in solche Intervalle:iso8601_interval_from_seconds().

Letzteres ist ziemlich einfach, da es als "PT {$ seconds} S" ausgeführt werden kann. Geben Sie immer nur Sekunden weiter. Vielleicht geht das besser mit einem Parser, der auf H (Stunde) oder M (Minute) umschaltet?

Das erste ist schwieriger, aber vielleicht gibt es einen Trick mit einem der vielen Konverter für Zeichenfolgen in PHP? Ich würde gerne lernen, wie man eine solche Funktion zum Parsen von Intervallen verwendet. Oder lernen Sie eine Alternative.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage