получить следующий и предыдущий день с PHP

У меня две стрелы установлены, нажмите на следующий день, в ближайшие два дня, вскоре и в предыдущий день, два дня назад, в ближайшее время. код кажется не работает? поскольку он получает только один следующий и предыдущий день.

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

есть ли способ, если я нажму следующую кнопку, дата будет непрерывно изменяться на следующий день. на мгновение он будет только на один день вперед

 date('Ym-d', strtotime('+1 day', strtotime($date))) 

Должен прочесть

 date('Ym-d', strtotime(' +1 day')) 

Обновить, чтобы ответить на вопрос, заданный в комментарии о постоянном изменении даты.

 <?php $date = isset($_GET['date']) ? $_GET['date'] : date('Ym-d'); $prev_date = date('Ym-d', strtotime($date .' -1 day')); $next_date = date('Ym-d', strtotime($date .' +1 day')); ?> <a href="?date=<?=$prev_date;?>">Previous</a> <a href="?date=<?=$next_date;?>">Next</a> 

Это увеличит и уменьшит дату на единицу с даты, в которую вы сейчас находитесь.

Требование: PHP 5> = 5.2.0

Вы должны использовать классы DateTime и DateInterval в Php, и все станет очень простым и понятным.

Пример: Позволяет получить предыдущий день.

 // 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('Ym-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); */ 

Ссылки: Современный PHP, новые возможности и передовая практика Джош Локхарт

использование

 $time = time(); 

За предыдущий день –

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

За 2 дня назад

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

На следующий день –

 date("Ymd", mktime(0,0,0,date("n", $time),date("j",$time)+ 1 ,date("Y", $time))); 

В течение следующих 2 дней

 date("Ymd", mktime(0,0,0,date("n", $time),date("j",$time) +2 ,date("Y", $time))); 
 strtotime('-1 day', strtotime($date)) 

Это возвращает количество разниц в секундах данной даты и $ date.so вы получаете неправильный результат.

Предположим, что $ date – это сегодняшняя дата и -1 день означает, что она возвращает -86400 в качестве разницы, а когда вы пытаетесь использовать дату, вы получите дату начала отметки времени Unix 1969-12-31.

достаточно назвать это так:

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

Также см. Документацию .

Просто используйте это

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

PHP-скрипт -1 **** на следующую дату

 <?php $currentdate=date('Ym-d'); $date_arr=explode('-',$currentdate); $next_date= Date("Ymd",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('Ym-d'); $date_arr=explode('-',$currentdate); $next_date= Date("Ymd",mktime(0,0,0,$date_arr[1],$date_arr[2],$date_arr[0]+1)); echo $next_date; ?> 

на всякий случай, если вы хотите на следующий день или предыдущий день с сегодняшнего дня

date («Ymd», mktime (0, 0, 0, дата («m»), дата («d») – 1, дата («Y»)));

просто измените «-1» на «+1», Йосафат

всегда убедитесь, что вы установили часовой пояс по умолчанию

 date_default_timezone_set('Europe/Berlin'); 

создать экземпляр DateTime, удерживая текущее время

 $datetime = new DateTime(); 

создать один интервал времени

 $interval = new DateInterval('P1D'); 

изменить экземпляр DateTime

 $datetime->sub($interval); 

отображение результата или print_r($datetime); для более глубокого понимания

 echo $datetime->format('Ym-d'); 

НАКОНЕЧНИК:

Если вы не хотите изменять часовой пояс по умолчанию, вместо этого используйте класс DateTimeZone .

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

или просто включить его внутри конструктора в этой форме new DateTime("now", $myTimezone);