web-dev-qa-db-fra.com

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

J'ai deux flèches installées, cliquez pour le jour suivant, les deux prochains jours, bientôt et le jour précédent, il y a deux jours, pour bientôt. le code semble ne pas fonctionner? comme il n'y en a qu'un jour précédent et le lendemain.

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

y at-il un moyen si je clique sur le bouton suivant, la date changera continuellement pour le jour suivant. pour un moment, il n'aura qu'un jour d'avance 

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

Devrais lire

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

Mise à jour pour répondre à la question posée dans un 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 de un à partir de la date à laquelle vous vous trouvez.

183
Alan Whitelaw

Condition requise: PHP 5> = 5.2.0

Vous devriez utiliser les classes DateTime et DateInterval dans Php, et tout deviendra très facile à lire.

Exemple: permet d’obtenir 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 pratiquesPar Josh Lockhart

7
Erald Karakashi

Utilisation

$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 lendemain -

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)));
6
strtotime('-1 day', strtotime($date))

Ceci retourne le nombre de différence en secondes de la date donnée et le $ date.so vous obtenez un résultat erroné.

Supposons que $ date est aujourd'hui et que -1 jour signifie qu'il renvoie -86400 comme différence et que, lorsque vous essayez d'utiliser la date, vous obtiendrez la date de début de l'horodatage Unix.

3
Prajwal GN

Utilisez simplement ceci 

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

il suffit de l'appeler ainsi:

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

Voir aussi la documentation .

1
shadyyx

Vous pouvez utiliser 'now' as string pour obtenir la date d'aujourd'hui/de demain/d'hier:

$previousDay = date('Y-m-d', strtotime('now - 1day'));
$toDay       = date('Y-m-d', strtotime('now'));
$nextDay     = date('Y-m-d', strtotime('now + 1day'));
0
Alex Joe

Php script -1 **** son à la prochaine date

<?php

$currentdate=date('Y-m-d');


$date_arr=explode('-',$currentdate);


$next_date=
Date("Y-m-d",mktime(0,0,0,$date_arr[1],$date_arr[2]+1,$date_arr[0]));



echo $next_date;
?>**

**Php script -1****its to Next year**


<?php

$currentdate=date('Y-m-d');


$date_arr=explode('-',$currentdate);


$next_date=
Date("Y-m-d",mktime(0,0,0,$date_arr[1],$date_arr[2],$date_arr[0]+1));



echo $next_date;
?>
0
Ponmathavan Mani

assurez-vous toujours d'avoir défini votre fuseau horaire par défaut

date_default_timezone_set('Europe/Berlin');

créer une instance DateTime contenant la date/heure actuelle

$datetime = new DateTime();

créer un intervalle d'un jour

$interval = new DateInterval('P1D');

modifier l'instance DateTime

$datetime->sub($interval);

affiche le résultat ou print_r($datetime); pour plus d'informations 

echo $datetime->format('Y-m-d');

POINTE:

Si vous ne souhaitez pas modifier le fuseau horaire par défaut, utilisez plutôt la classe DateTimeZone.

$myTimezone = new DateTimeZone('Europe/Berlin');
$datetime->setTimezone($myTimezone); 

ou simplement l'inclure dans le constructeur sous cette forme new DateTime("now", $myTimezone);

0
Santosh Shah

juste au cas où si vous voulez le lendemain ou le jour précédent de la date d'aujourd'hui

date ("Y-m-d", mktime (0, 0, 0, date ("m"), date ("d") - 1, date ("Y")));

remplacez simplement le "-1" par le "+1" regards, Yosafat

0
Yosafat Ksatria