76 votes

obtenir le jour suivant et le jour précédent avec PHP

J'ai mis en place deux flèches, cliquez pour le jour suivant, les deux prochains jours, bientôt et le jour précédent, il y a deux jours, bientôt. Le code semble ne pas fonctionner ? car il ne donne qu'un jour suivant et un jour précédent.

<a href="home.php?date=<?= date('Y-m-d', strtotime('-1 day', strtotime($date))) ?>" class="prev_day" title="Previous Day" ></a> 
<a href="home.php?date=<?= date('Y-m-d', strtotime('+1 day', strtotime($date))) ?>" class="next_day" title="Next Day" ></a>

si je clique sur le bouton suivant, la date changera continuellement pour le jour suivant. pendant un moment, elle n'avancera que d'un jour.

234voto

Alan Whitelaw Points 3416
date('Y-m-d', strtotime('+1 day', strtotime($date)))

Devrait être lu

date('Y-m-d', strtotime(' +1 day'))

Mise à jour pour répondre à la question posée dans le commentaire sur le changement continu de la date.

<?php
$date = isset($_GET['date']) ? $_GET['date'] : date('Y-m-d');
$prev_date = date('Y-m-d', strtotime($date .' -1 day'));
$next_date = date('Y-m-d', strtotime($date .' +1 day'));
?>

<a href="?date=<?=$prev_date;?>">Previous</a>
<a href="?date=<?=$next_date;?>">Next</a>

Cela augmentera et diminuera la date d'une unité par rapport à la date à laquelle vous vous trouvez à ce moment-là.

7voto

Erald Karakashi Points 182

Exigence : PHP 5 >= 5.2.0

Vous devez utiliser le DateTime et DateIntervalle en Php, et les choses deviendront très faciles et lisibles.

Exemple : Prenons le jour précédent.

// always make sure to have set your default timezone
date_default_timezone_set('Europe/Berlin');

// create DateTime instance, holding the current datetime
$datetime = new DateTime();

// create one day interval
$interval = new DateInterval('P1D');

// modify the DateTime instance
$datetime->sub($interval);

// display the result, or print_r($datetime); for more insight 
echo $datetime->format('Y-m-d');

/** 
* TIP:
* if you dont want to change the default timezone, use
* use the DateTimeZone class instead.
*
* $myTimezone = new DateTimeZone('Europe/Berlin');
* $datetime->setTimezone($myTimezone); 
*
* or just include it inside the constructor 
* in this form new DateTime("now",   $myTimezone);
*/

Références : PHP moderne, nouvelles fonctionnalités et bonnes pratiques Par Josh Lockhart

6voto

Utilisez

$time = time();

Pour le jour précédent -

date("Y-m-d", mktime(0,0,0,date("n", $time),date("j",$time)- 1 ,date("Y", $time)));

Depuis 2 jours

date("Y-m-d", mktime(0,0,0,date("n", $time),date("j",$time) -2 ,date("Y", $time)));

Pour le jour suivant -

date("Y-m-d", mktime(0,0,0,date("n", $time),date("j",$time)+ 1 ,date("Y", $time)));

Pour les 2 prochains jours

date("Y-m-d", mktime(0,0,0,date("n", $time),date("j",$time) +2 ,date("Y", $time)));

4voto

SarwarCSE Points 445

Il suffit d'utiliser ce

echo date('Y-m-d',strtotime("yesterday"));
echo date('Y-m-d',strtotime("tomorrow"));

3voto

Prajwal GN Points 57
strtotime('-1 day', strtotime($date))

Cela renvoie le nombre de secondes de différence entre la date donnée et la date $date.so you are getting wrong result .

Supposons que $date soit la date du jour et que -1 jour signifie qu'il renvoie -86400 comme différence et que lorsque vous essayez d'utiliser la date, vous obtenez 1969-12-31, date de début de l'horodatage Unix.

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