Ajout d'un jour à une date : résolution des problèmes de roulement de date
L'ajout d'un jour à une date devrait intuitivement entraîner une date un jour plus tard . Cependant, dans certains scénarios, les ajouts de dates peuvent donner des résultats inattendus, en particulier lorsque des reports de mois sont impliqués.
Problème :
Considérez le code suivant qui incrémente une date d'une unité. jour :
$stop_date = date('Y-m-d H:i:s', strtotime('2009-09-30 20:24:00')); echo 'date before day adding: '.$stop_date; $stop_date = date('Y-m-d H:i:s', strtotime('+1 day', $stop_date)); echo ' date after adding one day. SHOULD be rolled over to the next month: '.$stop_date;
Lors de son exécution, ce code produit le résultat suivant, qui indique de manière incorrecte la date précédant le jour. ajouté :
date before day adding: 2009-09-30 20:24:00 date after adding one day. SHOULD be rolled over to the next month: 2009-09-30 20:24:00
Solutions :
Pour résoudre ce problème, deux approches peuvent être utilisées :
Approche 1 : Utiliser le Corriger la chaîne de format pour strtotime
La fonction PHP strtotime nécessite une chaîne de format spécifique pour analyser correctement et modifier les dates. Dans le code fourni, la chaîne de format utilisée (« Y-m-d H:i:s ») permet uniquement la manipulation des heures et des minutes. Pour activer les reports de mois, la chaîne de format doit inclure le spécificateur 'Y-m-d' :
$stop_date = date('Y-m-d H:i:s', strtotime('2009-09-30 20:24:00 ' . '+1 day'));
Approche 2 : Utilisation de la classe DateTime
La classe DateTime introduite en PHP La version 5.2.0 fournit un mécanisme amélioré pour la manipulation des dates. À l'aide de l'objet DateTime, vous pouvez incrémenter directement les dates d'un jour :
$stop_date = new DateTime('2009-09-30 20:24:00'); echo 'date before day adding: ' . $stop_date->format('Y-m-d H:i:s'); $stop_date->modify('+1 day'); echo 'date after adding 1 day: ' . $stop_date->format('Y-m-d H:i:s');
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!