获得12个月前的PHP

时间:2017-08-03 13:56:31

标签: php

我正在捕捉当前月份的第一天和最后一天。然后我想更进一步,减去12个月,这样我可以得到12个月前和11个月前的第一天和最后一天。我的问题是语法NEVER从当前月份改变。以下所有结果均为08/01/2017和08/31/2017

如何更改以便产生准确的结果?

    $firstdayofmonth = date('Y-m-01');
$lastdayofmonth = date('Y-m-t');

$firstdayofmonth = date('m-d-Y', strtotime($firstdayofmonth));
$lastdayofmonth = date('m-d-Y', strtotime($lastdayofmonth));

$month12start = date($firstdayofmonth, strtotime("-12 months"));
$month12end = date($lastdayofmonth, strtotime("-12 months"));
$month11start = date($firstdayofmonth, strtotime("-11 months"));
$month11end = date($lastdayofmonth, strtotime("-11 months"));

echo $month12start;
echo $month12end;
echo $month11start;
echo $month11end;

1 个答案:

答案 0 :(得分:2)

strtotime()不是PHP中最可靠的日期方法,可能有一些奇怪的行为,请参阅此处 - Removing exactly one month from a date

我建议您使用DateTime(),如下所示:

$date = new DateTime(); //Today
$lastDay = $date->format("Y-m-t"); //Get last day
$dateMinus12 = $date->modify("-12 months"); // Last day 12 months ago