获取下一个和前一天的PHP

我有2个箭头设置,点击第二天,接下来的2天,即将和前一天,2天前,即将。 代码似乎不工作? 因为它只有下一个和前一天。

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

有没有办法,如果我点击下一个button,date将持续改变第二天。 一会儿它只会提前一天

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

应该读

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

更新以回答关于连续更改date的问题。

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

这将从当时的date起增加和减less一个date。

使用

 $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))); 

要求:PHP 5> = 5.2.0

你应该使用Php中的DateTimeDateInterval类,事情会变得非常简单和可读。

例如:让我们得到前一天。

 // 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,新function和良好实践作者:Josh Lockhart

 strtotime('-1 day', strtotime($date)) 

这将返回给定date和$ date.so之间差异的秒数,您将得到错误的结果。

假设$ date是今天的date,-1天意味着它返回-86400作为差异,当你尝试使用date,你会得到1969-12-31 Unix时间戳的开始date。

这样称呼就足够了:

 <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 ****其下一个date

 <?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,date(“m”),date(“d”) – 1,date(“Y”)));

只需将“-1”改为“+1”即可,Yosafat

始终确保已设置您的默认时区

 date_default_timezone_set('Europe/Berlin'); 

创buildDateTime实例,保存当前的date时间

 $datetime = new DateTime(); 

创build一天的时间间隔

 $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); 

或者只是将其包含在构造函数中,以这种formsnew DateTime("now", $myTimezone);