Maison >développement back-end >tutoriel php >Pourquoi l'ajout d'un jour à une date ne parvient-il parfois pas à se reporter au mois suivant ?

Pourquoi l'ajout d'un jour à une date ne parvient-il parfois pas à se reporter au mois suivant ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-22 00:45:12428parcourir

Why Does Adding One Day to a Date Sometimes Fail to Roll Over to the Next Month?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn