получить следующий и предыдущий день с 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>


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

1994   10  

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

    Ничего не найдено.