PHP valide la chaîne de date ISO 8601
Comment valider la norme ISO 8601 date chaîne de caractères (ex: 2011-10-02T23:25:42Z).
Je sais qu'il y a plusieurs représentations possibles de la norme ISO 8601 dates, mais je ne suis intéressé dans de valider le format que j'ai donné comme exemple ci-dessus.
Merci!
source d'informationauteur titel
Vous devez vous connecter pour publier un commentaire.
Cela a fonctionné pour moi, il utilise une expression régulière pour vous assurer que la date est au format que vous voulez, puis tente d'analyser la date et de le recréer à assurez-vous que la sortie correspond à l'entrée:
Vous pourriez développer l'utilisation checkdate assurez-vous que le mois, le jour et l'année sont valables aussi bien.
Edit: de loin la méthode la plus simple est de simplement essayer de créer un
DateTime
objet à l'aide de la chaîne, par exemple,Si le
DateTime
constructeur ne peut pas analyser la chaîne, il va lever une exception, par exempleNotez que si vous laissez au large de la zone de temps de désignation, il utilisera la configuration du fuseau horaire par défaut.
Deuxième méthode la plus simple est d'utiliser une expression régulière. Quelque chose comme cela, de quoi couvrir
Je veux partager ma solution légère. Il n'est pas l'idéal, mais pourrait être utile pour quelqu'un.
Attention!
Valide ISO8601 dates échouera Regardez la liste ci-dessous
Voir http://www.pelagodesign.com/blog/2009/05/20/iso-8601-date-validation-that-doesnt-suck/. Il donne à cette expression à utiliser:
Je suppose que ce n'est pas la réponse à votre question exactement, car il correspond à tout valide la norme ISO 8601 date, mais si c'est bien alors cela fonctionne parfaitement.
C'est la fonction que j'utilise. Il est similaire à la réponse de drew010 mais fonctionne aussi pour les horodatages se terminant par "+01:00" ou "-01:00".