Mon code pour ajouter un jour à une date retourne une date avant le jour en ajoutant: 2009-09-30 20:24:00
date après avoir ajouté un jour DEVRAIT être reporté au mois suivant: 1970-01-01 17:33:29
<?php
//add day to date test for month roll over
$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;
?>
J'ai déjà utilisé un code similaire, qu'est-ce que je fais de mal ici?
<?php
$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;
?>
Pour PHP 5.2.0+, vous pouvez également procéder comme suit:
$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');
$date = new DateTime('2000-12-31');
$date->modify('+1 day');
echo $date->format('Y-m-d') . "\n";
La solution la plus simple:
$date = new DateTime('+1 day');
echo $date->format('Y-m-d H:i:s');
Cela a fonctionné pour moi: Pour la date actuelle
$date = date('Y-m-d', strtotime("+1 day"));
pour n'importe quelle date:
date('Y-m-d', strtotime("+1 day", strtotime($date)));
Essaye ça
echo date('Y-m-d H:i:s',date(strtotime("+1 day", strtotime("2009-09-30 20:24:00"))));
Simple à lire et à comprendre de manière:
$original_date = "2009-09-29";
$time_original = strtotime($original_date);
$time_add = $time_original + (3600*24); //add seconds of one day
$new_date = date("Y-m-d", $time_add);
echo $new_date;
Je viens toujours d'ajouter 86400 (secondes dans une journée):
$stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00") + 86400);
echo 'date after adding 1 day: '.$stop_date;
Ce n'est pas la façon la plus simple de le faire, mais ça marche!
La méthode modify()
qui peut être utilisée pour ajouter des incréments à une valeur DateTime
existante.
Créez un nouvel objet DateTime
avec la date et l'heure actuelles:
$due_dt = new DateTime();
Une fois que vous avez l'objet DateTime
, vous pouvez manipuler sa valeur en ajoutant ou en soustrayant des périodes:
$due_dt->modify('+1 day');
Vous pouvez en lire plus sur le manuel PHP .
Bien que je sois d’accord avec la réponse de Doug Hays, je vais préciser ici que la raison pour laquelle votre code ne fonctionne pas est que strtotime () attend un INT comme deuxième argument, pas une chaîne (même celle qui représente une date)
Si vous activez le rapport d'erreur max, vous verrez ceci comme une erreur "Une valeur numérique non bien formée" qui correspond au niveau E_NOTICE.
Le code suivant obtient le premier jour de janvier de l'année en cours (mais il peut s'agir d'une autre date) et ajoute 365 jours à ce jour (mais il peut s'agir d'un nombre de jours) à l'aide de la classe DateTime et de sa méthode modify () et format ( ):
echo (new DateTime((new DateTime())->modify('first day of January this year')->format('Y-m-d')))->modify('+365 days')->format('Y-m-d');