检索给定日期的最后一个月的第一天


Retrieve the first day of the last month for a given date

给定一个字符串,如2016-05-25,我想得到上个月的第一天(例如2016-04-01)。

我已经试过了

$month_ini = new DateTime("first day of last month"); 
$month_end = new DateTime("last day of last month");

但是我得到的是前一个月相对于当前月份的第一天,这不是我想要的。

具体来说,我将从客户获得随机日期(格式为'Y-m-d'),我必须显示前几个月的第一天相对于客户的请求月份。

如何为任何月份(而不是当前月份)执行此操作

$date = new DateTime('2016-05-25');
$date->modify('-1 month');
echo $date->format('Y-m-t'); // 2016-04-30
echo $date->format('Y-m-01'); // 2016-04-01

预请求:System应该是UTC

$firstDayLastMonth = date('Y-m-d', strtotime('first day of last month'));
$lastDayLastMonth = date('Y-m-d', strtotime('last day of last month'));
echo $firstDayLastMonth .'<br>'. $lastDayLastMonth ;

这适用于任何月份:

$datestart = date('Y-m-01',mktime(0, 0, 0, date("m")-1, 1, date("Y")));
$dateend   = date('Y-m-t' ,mktime(0, 0, 0, date("m")-1, 1, date("Y")));

我使用的解决方案是这样的:

$date = new DateTime('2016-12-31');
$date->modify('FIRST DAY OF -1 MONTH');
echo $date->format('Y-m-d'); //2016-11-01