获取下一个和前一天的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中的DateTime和DateInterval类,事情会变得非常简单和可读。
例如:让我们得到前一天。
// 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);