web-dev-qa-db-fra.com

Ajout de jours à $ Date dans PHP

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?

186
Istari

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
385
shamittomar

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"
70
Daniel Vandersluis

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)

22
Omn

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";
17
Madhu V Rao

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.

8
SztupY

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 
4
FrozenButcher

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
3
Engr Atiq

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

2
JoyGuru

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";
0
vikasgore