我设置了两个箭头,点击第二天,接下来的两天,很快和前一天,两天前,很快。代码似乎不起作用?因为它只能在下一天和前一天获得。
<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>
如果我点击下一个按钮有一种方法,日期会在第二天不断变化。暂时只能提前一天
答案 0 :(得分:191)
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>
这将从您当时的日期开始增加和减少日期。
答案 1 :(得分:7)
您应该使用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('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,新功能和良好实践 作者Josh Lockhart
答案 2 :(得分:6)
使用
$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)));
答案 3 :(得分:3)
strtotime('-1 day', strtotime($date))
这将返回给定日期和$ date的差异秒数。所以你得到错误的结果。
假设$ date是今天的日期,-1天意味着它返回-86400作为差异,当您尝试使用日期时,您将获得1969-12-31 Unix时间戳开始日期。
答案 4 :(得分:1)
以这种方式调用就足够了:
<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>
答案 5 :(得分:1)
只需使用此
即可echo date('Y-m-d',strtotime("yesterday"));
echo date('Y-m-d',strtotime("tomorrow"));
答案 6 :(得分:0)
Php脚本-1 ****其下一个日期
chown: changing ownership of '/var/lib/mysql/': Operation not permitted
答案 7 :(得分:0)
以防万一你希望从今天起的第二天或前一天
日期(“Y-m-d”,mktime(0,0,0,日期(“m”),日期(“d”) - 1,日期(“Y”)));
只需将“-1”更改为“+1” 问候,Yosafat </ p>
答案 8 :(得分:0)
始终确保设置了默认时区
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);
答案 9 :(得分:0)
您可以使用'now'作为字符串来获取今天/明天/昨天的日期:
Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
答案 10 :(得分:0)
dateTime() object也非常容易。
$tomorrow = new DateTime('tomorrow');
echo $tomorrow->format("Y-m-d"); // Tomorrow's date
$yesterday = new DateTime('yesterday');
echo $yesterday->format("Y-m-d"); // Yesterday's date