如何获得4天前到现在 - php

时间:2016-03-06 11:20:38

标签: php

如果当前日期是2016-03-06,我想获得这些日期:

2016-03-06
2016-03-05
2016-03-04
2016-03-03

我试图达到这个目的,但我的结果不是我想要的:

$_4date = date("y-m-d",strtotime("day"));
$_3date = date("y-m-d",strtotime("-1 day"));
$_2date = date("y-m-d",strtotime("-2 day"));
$_1date = date("y-m-d",strtotime("-3 day"));

echo $_4date;
echo '<br />';
echo $_3date;
echo '<br />';
echo $_2date;
echo '<br />';
echo $_1date;

结果是:

70-01-01
16-03-05
16-03-04
16-03-03

5 个答案:

答案 0 :(得分:3)

要使用strtotime获取今天的约会,请执行strtotime("today");。但是,正如 Bjorn 所评论的那样,您只需直接致电date()即可。

此外,您没有获得四位数年份的原因是因为您使用小写y而不是大写Y

尝试date("Y-m-d", strtotime("-1 day"));

以下代码说明了所需的更改:

$today = date("Y-m-d");
$yesterday = date("Y-m-d", strtotime("-1 day"));

echo "$today <br />";
echo "$yesterday <br />";

// Output
2016-03-06 
2016-03-05

如需更多信息,请咨询PHP documentation on the date function。它实际上向您展示了对yY的期望,并且它还向您显示作为第二个参数传递的默认值是time(),这意味着默认值是当前时间

有关strtotime()函数及其可能参数的更多信息,可以参考

PHP's strtotime documentation

在提出问题之前,请先检查(PHP)文档。

答案 1 :(得分:3)

你需要这样使用:

$_4date = date("Y-m-d"); 
$_3date = date("Y-m-d",strtotime("-1 day")); 

$_2date = date("Y-m-d",strtotime("-2 day")); 
$_1date = date("Y-m-d",strtotime("-3 day"));

<强>解释

对于当前日期,无需使用strtotime()

全年您需要使用此格式Y-m-dy-m-d会向您返回16-03-06的日期,但Y-m-d会向您返回2016-03-06

答案 2 :(得分:3)

使用for循环strtotime( "... days ago" )

for( $i = 0; $i < 4; $i++ )
{
    echo date( 'Y-m-d', strtotime( "$i days ago" ) ) . PHP_EOL;
}

第一个循环(0 days ago)将输出今天的日期,其他循环将输出过去几天。

eval.in demo

答案 3 :(得分:2)

<?php

$date = [date("Y-m-d")];
for($i = 1; $i < 4; $i++) {
    $date[] = date("Y-m-d",strtotime("-$i day"));
}
//For cli output you'll need:
echo implode("\n", $date) . "\n";
//For web output you'll need:
echo implode("<br />", $date) . "<br />";

答案 4 :(得分:2)

你需要使用资本&#39; Y&#39;全年(2016年),而不是小&#39; y&#39;这将以速记(16)显示年份。

目前的日期只需使用date("Y-m-d")

<?php

$_4date = date("Y-m-d");
$_3date = date("Y-m-d",strtotime("-1 day"));
$_2date = date("Y-m-d",strtotime("-2 day"));
$_1date = date("Y-m-d",strtotime("-3 day"));

echo $_4date;
echo '<br />';
echo $_3date;
echo '<br />';
echo $_2date;
echo '<br />';
echo $_1date;

?>

Working Example