给定一个字符串,如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