获取第二天和前一天的PHP


get next and previous day with 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>

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

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>

这将从您当时所在的日期开始增加或减少一个日期。

直接使用

echo date('Y-m-d',strtotime("yesterday"));
echo date('Y-m-d',strtotime("tomorrow"));

要求: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('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)));

For 2 days ago

date("Y-m-d", mktime(0,0,0,date("n", $time),date("j",$time) -2 ,date("Y", $time)));

For Next day -

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

这样称呼就足够了:

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

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

返回给定日期与$date的秒差数。所以你得到了错误的结果。

假设$date是今天的日期,-1 day表示它返回-86400作为差值,当您尝试使用date时,您将得到1969-12-31 Unix时间戳的开始日期。

您可以使用'now'作为字符串来获取今天/明天/昨天的日期:

$previousDay = date('Y-m-d', strtotime('now - 1day'));
$toDay       = date('Y-m-d', strtotime('now'));
$nextDay     = date('Y-m-d', strtotime('now + 1day'));

始终确保设置了默认时区

date_default_timezone_set('Europe/Berlin');

创建DateTime实例,保存当前日期时间

$datetime = new DateTime();

create one day interval

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

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"问候,Yosafat

dateTime()对象也很简单。

$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
$Day_seconds = 86400;
$next_day = $day_timestamp + $Day_seconds;
$prev_day = $day_timestamp - $Day_seconds;