PHP:
Calcul d'une date future ou passée
Comment faire :
<?php
$dateActuelle = new DateTime(); // Aujourd'hui
echo "Date actuelle : " . $dateActuelle->format('Y-m-d H:i:s') . "\n";
// Ajouter 10 jours
$dateFutur = clone $dateActuelle;
$dateFutur->modify('+10 days');
echo "Dans 10 jours : " . $dateFutur->format('Y-m-d H:i:s') . "\n";
// Retirer 30 jours
$datePasse = clone $dateActuelle;
$datePasse->modify('-30 days');
echo "Il y a 30 jours : " . $datePasse->format('Y-m-d H:i:s') . "\n";
?>
Sortie exemple :
Date actuelle : 2023-03-15 17:45:23
Dans 10 jours : 2023-03-25 17:45:23
Il y a 30 jours : 2023-02-13 17:45:23
Exploration plus profonde :
Historiquement, PHP a utilisé la fonction strtotime
pour manipuler les dates, mais depuis PHP 5.2.0, les classes DateTime
et DateTimeImmutable
sont préférées pour leur meilleure gestion des fuseaux horaires et leur interface orientée objet.
Alternatives : outre DateTime
, on peut utiliser DateInterval
pour ajouter ou soustraire des périodes spécifiques et DatePeriod
pour itérer sur une période avec une certaine fréquence.
Concernant l’implémentation, lorsque l’on travaille avec DateTime
, il faut être attentif aux fuseaux horaires (avec DateTimeZone
) pour éviter des erreurs de calcul. Les méthodes add
et sub
de DateTime
peuvent également être utilisées pour des modifications directes sans la syntaxe de chaîne de modify
.