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

Linda Hamilton
Libérer: 2024-11-22 00:45:12
original
347 Les gens l'ont consulté

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;
Copier après la connexion

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
Copier après la connexion

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'));
Copier après la connexion

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');
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal