J'ai une date renvoyée dans le cadre d'une requête mySQL sous la forme 2010-09-17
Je voudrais définir les variables $ Date2 à $ Date5 comme suit:
$Date2 = $Date + 1
$Date3 = $Date + 2
etc..
pour qu'il retourne 2010-09-18
, 2010-09-19
etc ...
J'ai essayé
date('Y-m-d', strtotime($Date. ' + 1 day'))
mais cela me donne la date AVANT $Date
.
Quelle est la manière correcte d’obtenir mes dates au format "Y-m-d" afin qu’elles puissent être utilisées dans une autre requête?
Tout ce que vous avez à faire est d'utiliser days
au lieu de day
comme ceci:
<?php
$Date = "2010-09-17";
echo date('Y-m-d', strtotime($Date. ' + 1 days'));
echo date('Y-m-d', strtotime($Date. ' + 2 days'));
?>
Et cela sort correctement:
2010-09-18
2010-09-19
Si vous utilisez PHP 5.3, vous pouvez utiliser un objet DateTime
et sa add
:
$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->add(new DateInterval('P1D')); // P1D means a period of 1 day
$Date2 = $date->format('Y-m-d');
Examinez la page de manuel DateInterval
pour voir comment créer d'autres périodes à ajouter à votre date (2 jours seraient 'P2D'
, 3 seraient 'P3D'
, et ainsi sur).
Sans PHP 5.3, vous devriez pouvoir utiliser strtotime
comme vous l'avez fait (je l'ai testé et cela fonctionne à la fois en 5.1.6 et 5.2.10):
$Date1 = '2010-09-17';
$Date2 = date('Y-m-d', strtotime($Date1 . " + 1 day"));
// var_dump($Date2) returns "2010-09-18"
Depuis PHP 5.2, vous pouvez utiliser modify avec un objet DateTime:
http://php.net/manual/en/datetime.modify.php
$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->modify('+1 day');
$Date2 = $date->format('Y-m-d');
Soyez prudent lorsque vous ajoutez des mois ... (et dans une moindre mesure, des années)
Voici un petit extrait pour illustrer les modifications de date:
$date = date("Y-m-d");
//increment 2 days
$mod_date = strtotime($date."+ 2 days");
echo date("Y-m-d",$mod_date) . "\n";
//decrement 2 days
$mod_date = strtotime($date."- 2 days");
echo date("Y-m-d",$mod_date) . "\n";
//increment 1 month
$mod_date = strtotime($date."+ 1 months");
echo date("Y-m-d",$mod_date) . "\n";
//increment 1 year
$mod_date = strtotime($date."+ 1 years");
echo date("Y-m-d",$mod_date) . "\n";
Vous pouvez également utiliser le format suivant
strtotime("-3 days", time());
strtotime("+1 day", strtotime($date));
Vous pouvez empiler les modifications de cette façon:
strtotime("+1 day", strtotime("+1 year", strtotime($date)));
Notez la différence entre cette approche et celle des autres réponses: au lieu de concaténer les valeurs +1 day
et <timestamp>
, vous pouvez simplement indiquer l’horodatage comme deuxième paramètre de strtotime
.
Utilisation d'une variable pour Nombre de jours
$myDate = "2014-01-16";
$nDays = 16;
$newDate = strtotime($myDate . '+ '.$nDays.'days');
echo newDate('d/m/Y', $soma); //format new date
Voici la solution la plus simple à votre requête
$date=date_create("2013-03-15"); // or your date string
date_add($date,date_interval_create_from_date_string("40 days"));// add number of days
echo date_format($date,"Y-m-d"); //set date format of the result
Voici un moyen facile de résoudre ce problème.
<?php
$date = "2015-11-17";
echo date('Y-m-d', strtotime($date. ' + 5 days'));
?>
La sortie sera:
2015-11-22
La solution a trouvé d'ici - Comment ajouter des jours à ce jour en PHP
Tous doivent utiliser le code ci-dessous:
$nday = time() + ( 24 * 60 * 60);
echo 'Now: '. date('Y-m-d') ."\n";
echo 'Next Day: '. date('Y-m-d', $nday) ."\n";