PHP DateTime : créez, comparez et formatez des dates

Dans ce savoir nous allons voir comment bien gérer les dates en PHP. Lorsque je recherche du code sur les problèmes d'heure et de date rencontrés par les développeurs, j'ai remarqué que beaucoup de gens utilisent encore les anciennes fonctions PHP telles que date(), time() ou strtotime(). Que diriez-vous d'utiliser la classe DateTime à la place ?
DateTime
peut effectuer toutes les opérations habituelles de date et d'heure que vous pourriez demander, et même plus. L'utilisation DateTime
peut faire gagner beaucoup de temps lorsque vous devez effectuer des opérations simples ou plus complexes sur les dates.
Pourquoi utiliser DateTime au lieu d'un tas de fonctions de date PHP ?
Voici pourquoi:
DateTime
est plus robuste à utiliser. Moins de bug, c'est toujours mieux.DateTime
est une classe. Vous pouvez utiliser la composition pour modifier facilement son comportement. Vous avez toujours besoin de la même date en entrée pour vos tests unitaires ? Utilisez votre propre instanceDateTime
qui renvoie toujours l'anniversaire de votre chien !- L'utilisation d'une classe est plus facile à comprendre pour vos collègues développeurs. Même s'ils ne le savent pas
DateTime
, ils n'ont qu'à consulter la documentation d'une seule classe. C'est certainement mieux que de chercher un tas de fonctions indépendantes.
Instanciation et formatage DateTime
<?php
$dateTime = new DateTime('2016-01-01');
echo $dateTime->format('Y-m-d H:i:s');
Sortie : 2016-01-01 00:00:00
<?php
$dateTime = new DateTime();
echo $dateTime->format('Y-m-d H:i:s');
Sortie : quelle que soit la date actuelle, correctement formatée.
DateTime et Timestamps
<?php
$dateTime = new DateTime();
$dateTime->setTimestamp(1271802325);
echo $dateTime->format('Y-m-d H:i:s');
Sortie : 2010-04-20 22:25:25
<?php
$dateTime = new DateTime('2016-05-20');
echo $dateTime->getTimestamp();
Sortie : 1271802325
Ajouter ou soustraire du temps
<?php
$dateTime = new DateTime('2016-01-01');
$dateTime->modify('+1 day');
echo $dateTime->format('Y-m-d H:i:s');
Sortie : 2016-01-02 00:00:00
<?php
$dateTime = new DateTime('+1d');
echo $dateTime->format('Y-m-d H:i:s');
Sortie : Afficher la date actuelle plus un jour.
Intervalle entre deux dates
<?php
$datetime1 = new DateTime('2009-10-11 12:12:00');
$datetime2 = new DateTime('2009-10-13 10:12:00');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%Y-%m-%d %H:%i:%s');
Sortie : 00-0-1 22:0:0
Dans cet exemple, nous avons créé deux DateTime
objets. Ils recevront deux dates différentes dans leurs constructeurs.
Afin de comparer ces deux dates, nous utilisons la méthode diff()
du premier DateTime
objet avec le deuxième DateTime
objet comme argument.
La diff()
méthode renverra un nouvel objet de type DateInterval
. Si vous voulez formater la différence entre les deux dates, vous pouvez aussi utiliser la format()
méthode de la classe DateInterval
mais attention : elle n'acceptera pas le même formatage que la DateTime::format()
méthode.
Comparer les DateTimes
<?php
$datetime1 = new DateTime('2009-10-11 12:12:00');
$datetime2 = new DateTime('2009-10-13 10:12:00');
if ($datetime1 > $datetime2) {
echo 'datetime1 greater than datetime2';
}
if ($datetime1 < $datetime2) {
echo 'datetime1 lesser than datetime2';
}
if ($datetime1 == $datetime2) {
echo 'datetime2 is equal than datetime1';
}
Sortie : datetime1 lesser than datetime2
Vous êtes maintenant un maître de DateTime !
Je vous invite à lire la documentation PHP sur la classe DateTime. Vous n'aurez jamais à vous soucier de plusieurs fonctions et vous simplifierez considérablement votre code.
Catégories
Savoirs les plus récents
-
Création de tableaux en HTML
HTML5 -
PHP DateTime : créez, comparez et formatez des dates
PHP -
Correction algorithme : Généalogie
Algorithmes -
Correction algorithme : Coupe du monde
Algorithmes -
Correction algorithme : Découpage et collage
Algorithmes