用PHP获取下一天和前一天

时间:2011-05-04 12:43:50

标签: php date

我设置了两个箭头,点击第二天,接下来的两天,很快和前一天,两天前,很快。代码似乎不起作用?因为它只能在下一天和前一天获得。

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

如果我点击下一个按钮有一种方法,日期会在第二天不断变化。暂时只能提前一天

11 个答案:

答案 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 5&gt; = 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('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>

另见documentation

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