Maison >développement back-end >tutoriel php >Pourquoi l'ajout d'un jour à une date ne se répercute-t-il pas sur le mois suivant ?

Pourquoi l'ajout d'un jour à une date ne se répercute-t-il pas sur le mois suivant ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-29 11:35:13450parcourir

Why Does Adding a Day to a Date Not Roll Over to the Next Month?

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!

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