Correction de l'ajout de date avec survol du mois
Votre code a l'intention d'ajouter un jour à une date, mais il semble renvoyer une date qui précède l'ajout. Examinons le problème et fournissons une solution qui se déroule correctement sur plusieurs mois après l'ajout de jour.
Le code problématique :
$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;
L'erreur réside dans la ligne où vous effectuez l'ajout :
$stop_date = date('Y-m-d H:i:s', strtotime('+1 day', $stop_date));
Cette ligne utilise la fonction strtotime() pour manipuler la date. Cependant, lorsque vous spécifiez un décalage horaire tel que « 1 jour », les mois ne sont pas correctement reportés.
Solution
Pour ajouter correctement un jour et reporter les mois si nécessaire, vous pouvez utiliser l'une des approches suivantes :
PHP 5.3 :
$stop_date = '2009-09-30 20:24:00'; echo 'date before day adding: ' . $stop_date; $stop_date = date('Y-m-d H:i:s', strtotime($stop_date . ' +1 day')); echo 'date after adding 1 day: ' . $stop_date;
PHP 5.2 :
$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');
Ces solutions ajouteront correctement un jour à la date spécifiée et reporteront les mois si nécessaire.
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!