получить следующий и предыдущий день с 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>
есть ли способ, если я нажмите кнопку Далее, дата будет постоянно меняться на следующий день. на мгновение он получит только один день вперед
10 ответов:
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>это увеличит и уменьшит дату на один от даты вы находитесь на в то время.
требование: 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, новые функции и передовой опыт Джош Локхарт
использовать
$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)));
strtotime('-1 day', strtotime($date))Это возвращает количество разности в секундах заданной даты и $date.so вы получаете неправильный результат .
предположим, что $date-это сегодняшняя дата, а -1 день означает, что он возвращает -86400 в качестве разницы и при попытке использовать дату вы получите 1969-12-31 unix timestamp start date.
достаточно назвать это так:
<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>Смотрите также документация.
просто использовать
echo date('Y-m-d',strtotime("yesterday")); echo date('Y-m-d',strtotime("tomorrow"));
PHP скрипт -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 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; ?>
только в случае, если вы хотите на следующий день или предыдущий день от сегодняшней даты
дата ("Y-m-d", mktime (0, 0, 0, дата ("m"), дата ("d") -1,дата ("Y")));
просто измените "-1" на " +1" с уважением, Йосафат
всегда убедитесь, что вы установили часовой пояс по умолчанию
date_default_timezone_set('Europe/Berlin');создать экземпляр DateTime, удерживая текущий 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);
вы могли бы использовать 'теперь' как строка, чтобы получить сегодняшнюю/завтрашнюю / вчерашнюю дату:
$previousDay = date('Y-m-d', strtotime('now - 1day')); $toDay = date('Y-m-d', strtotime('now')); $nextDay = date('Y-m-d', strtotime('now + 1day'));
Comments