6.Le langage PHP

6.10.Les dates

6.10.1.Introduction

Apprendre à déterminer la date et l'heure courante, afficher une date sous différents formats (comme "1982-11-08 17:00", "08/11/1982 17:00', '8 novembre 1982 17:00', etc), récupérer (en parsant) les différents champs d'une date (jour, mois, année, heures, minutes, secondes, etc.), vérifier la validité d'une date (comme les 29 février), ajouter ou soustraire des jours à une date, tel est l'objectif de ce tutoriel.
PHP propose plusieurs solutions pour répondre à ces besoins. Chacunes ont leurs forces et leurs faiblesses:
  • les fonctions PHP natives (et historiques)
  • les classes DateTime & co (introduites avec PHP 5.2)
Les fonctions natives:
  • Les points forts:
    • Certaines permettent d'afficher ou de parser une date dans une langue donnée (en non pas forcément en anglais)
    • Il existe une fonction pour contrôler (véritablement) la validité d'une date
    • Elles sont compactes (moins de code à taper)
  • Les faiblesses:
    • Il n'y a pas de fonction d'ajout/suppression de temps à une date
    • Les fonctions ne sont pas disponibles dans tous les environnements (ex: windows)
    • Le comportement des fonctions peut varier d'un environnement à l'autre
Les classes:
  • Les points forts:
    • Il y a des méthodes d'ajout et de suppression de temps à une date
    • La programmation orienté objet permet d'associer heure et fuseau horaire
  • Les faiblesses:
    • Il n'y a pas de possibilité de traiter des dates sous forme textuelle (ex: 12 septembre 2000)
    • Il n'y a pas de méthode de contrôle de validité d'une date
rem
  • De l'utilité des fonctions d'ajout/suppression de temps. De prime abord, on peut penser que des fonctions d'ajout ou suppression de temps, ne sont pas bien nécessaires surtout lorsqu'avec les fonctions natives, ce sont des secondes que l'on manipule. En effet, dans ce cas, on peut se dire que pour déterminer la date et l'heure d'un événement quotidien il suffit d'ajouter 24 heures soit 24*3600 secondes à chaque fois. Mais cela c'est sans compter sur les changements d'horaire d'été et d'hiver. Ajouter 24 heures (et non pas une journée) la veille d'un passage à l'horaire d'hiver c'est passer par exemple du 26 octobre 2019 11:00 (heure de Paris) au 27 octobre 2019 10:00 (heure de Paris). L'événement se trouve alors décalé d'1h. Non, véritablement, pour éviter de tomber dans ce genre de piège, mieux vaut disposer de fonctions permettant d'ajouter non pas 24 heures mais bel et bien 1 journée.