284 votes

L'ajout de jours à $Date en PHP

J'ai une date de retour dans le cadre d'une requête mySQL sous la forme 2010-09-17

Je tiens à mettre les variables $Date2 $Date5 comme suit:

$Date2 = $Date + 1

$Date3 = $Date + 2

etc..

de sorte qu'elle 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.

Est-ce le bon moyen d'obtenir mes Dates dans le format de la forme "Y-m-d', de sorte qu'ils peuvent être utilisés dans une autre requête?

563voto

shamittomar Points 20136

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 il affiche correctement:

2010-09-18
2010-09-19

111voto

Daniel Vandersluis Points 30498

Si vous êtes à l'aide de PHP 5.3, vous pouvez utiliser un DateTime objet et de son add méthode:

$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');

Jetez un oeil à l' DateInterval constructeur de page de manuel pour voir comment construire d'autres périodes à ajouter à votre date (2 jours serait 'P2D', 3 serait 'P3D', et ainsi de suite).

Sans PHP 5.3, vous devriez être en mesure d'utiliser strtotime la façon dont vous l'avez fait (je l'ai testé et cela fonctionne dans les deux 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"

23voto

Madhu V Rao Points 374

Voici un petit extrait de démontrer date de modification:

$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";

9voto

SztupY Points 4586

Vous pouvez également utiliser le format suivant

strtotime("+1 day",strtotime($date))

Vous pouvez empiler les changements de cette façon:

strtotime("+1 day",strtotime("+1 year",strtotime($date)))

0voto

vikasgore Points 19

Tout ce soufflet code:

$nday = time() + ( 24 * 60 * 60);    
echo 'Now:       '. date('Y-m-d') ."\n";    
echo 'Next Day: '. date('Y-m-d', $nday) ."\n";

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X