我正在捕捉当前月份的第一天和最后一天。然后我想更进一步,减去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;
答案 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