Analyser et créer des ISO 8601 intervalles de Date et heure, comme PT15M en PHP

D'une bibliothèque et d'un webservice, je suis en utilisant communique temps-intervalles dans Format ISO 8601: PnYnMnDTnHnMnS. Je veux convertir ces formats en quelques secondes à peine. Et vice-versa. Les secondes sont beaucoup plus facile à calculer avec.

Exemple les valeurs de l'intervalle sont:

  • PT1M ou PT60S (1 minute)
  • PT1H, PT60M ou PT3600S (1 heure)

J'ai besoin de deux fonctions: analyser de telles valeurs de secondes: iso8601_interval_to_seconds() et de secondes dans de tels intervalles: iso8601_interval_from_seconds().

Ce dernier est plutôt simple, car il pourrait être fait dans le `"PT{$secondes}S", il suffit de passer quelques secondes le long, en tout temps. Peut-être que cela peut être fait plus agréable avec un analyseur qui bascule à H(heure) et M(minute)?

La première est plus difficile, mais peut-être qu'il y a un truc avec l'une des nombreuses cordes à jour des convertisseurs en PHP? J'aimerais apprendre comment utiliser cette fonction pour l'analyse d'intervalles. Ou apprendre une alternative.

  • Une très tard prudence ... la conversion P1MT de secondes serait impossible, sauf si vous savez que vous soyez à la conversion d'un mois de 28, 29, 30 ou 31 jours. Pour cette question, vous ne pouvez pas convertir P1YT en 365 jours, sans se tromper d'une année sur quatre. (Il ya une raison pourquoi les intervalles ne sont pas spécifiées dans les jours ou les secondes dans la norme).
  • La Réponse par Lee va dans les détails avec cette. TL;DR: vous avez besoin d'une date de départ.
  • Ahh merci @berkes, j'en ai oublié que lors de l'écrémage de la page (je l'ai trouvé en cherchant quelque chose sans rapport).
InformationsquelleAutor berkes | 2010-09-15