Получить следующий и предыдущий день с PHP
У меня установлены две стрелки, нажмите на следующий день, следующие два дня, скоро и предыдущий день, два дня назад, в ближайшее время. код кажется не работает? поскольку он получает только один следующий и предыдущий день.
<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>
есть ли способ, если я нажму следующую кнопку, дата будет непрерывно изменяться на следующий день. на мгновение он будет только на один день вперед
Ответы
Ответ 1
date('Y-m-d', strtotime('+1 day', strtotime($date)))
Должен читать
date('Y-m-d', strtotime(' +1 day'))
Обновить ответ на вопрос, заданный в комментарии о постоянном изменении даты.
<?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>
Это увеличит и уменьшит дату на единицу с даты, в которую вы сейчас находитесь.
Ответ 2
Требование: 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('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);
*/
Ссылки: Современный PHP, новые возможности и передовая практика
Джош Локхарт
Ответ 3
Использование
$time = time();
За предыдущий день -
date("Y-m-d", mktime(0,0,0,date("n", $time),date("j",$time)- 1 ,date("Y", $time)));
2 дня назад
date("Y-m-d", mktime(0,0,0,date("n", $time),date("j",$time) -2 ,date("Y", $time)));
На следующий день -
date("Y-m-d", mktime(0,0,0,date("n", $time),date("j",$time)+ 1 ,date("Y", $time)));
В течение следующих 2 дней
date("Y-m-d", mktime(0,0,0,date("n", $time),date("j",$time) +2 ,date("Y", $time)));
Ответ 4
strtotime('-1 day', strtotime($date))
Это возвращает количество разниц в секундах данной даты и $date.so вы получаете неправильный результат.
Предположим, что $date - это сегодняшняя дата и -1 день означает, что она возвращает -86400 как разницу, а когда вы пытаетесь использовать дату, вы получите дату начала отметки времени в формате Unix.
Ответ 5
достаточно назвать это так:
<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>
Также см. документацию .
Ответ 6
Просто используйте это
echo date('Y-m-d',strtotime("yesterday"));
echo date('Y-m-d',strtotime("tomorrow"));
Ответ 7
Php script -1 **** на следующую дату
<?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 скрипт -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;
?>
Ответ 8
на всякий случай, если вы хотите на следующий день или предыдущий день с сегодняшнего дня.
date ( "Y-m-d", mktime (0, 0, 0, дата ( "m" ), дата ( "d" ) - 1, дата ( "Y" )));
просто измените "-1" на "+1",
привет, Йосафат
Ответ 9
всегда убедитесь, что вы установили часовой пояс по умолчанию
date_default_timezone_set('Europe/Berlin');
создать экземпляр DateTime, удерживая текущее время жизни
$datetime = new DateTime();
создать один интервал времени
$interval = new DateInterval('P1D');
изменить экземпляр DateTime
$datetime->sub($interval);
отобразить результат или print_r($datetime);
для более глубокого понимания
echo $datetime->format('Y-m-d');
Совет:
Если вы не хотите изменять часовой пояс по умолчанию, используйте вместо этого класс DateTimeZone
.
$myTimezone = new DateTimeZone('Europe/Berlin');
$datetime->setTimezone($myTimezone);
или просто включите его внутри конструктора в этом виде new DateTime("now", $myTimezone);