php获取某个时间之前的若干月份
strtotime 函数获取上个月的错误的问题,例如以下
$time = date('Y-m', strtotime(" -1 month", strtotime("2020-10-31")));
print_r($time);
打印出2020-10
除了10月还有[3, 5, 7, 10, 12]
月份的31日会使用 strtotime(" -1 month")
获取错误的日期
影响strtotime 获取上个月的问题,可以先获取该月份的1号
.
/**
* 获取某个时间之前的若干月份
* @param $num
* @param string $time
* @return array
*/
function toLastMonth($num, $time = '')
{
if (empty($time)) {
$time = date("Y-m-01");
}
$m = " last day of -" . $num . " month";
$old_time = strtotime(date('Y-m-01', strtotime($m, strtotime($time))));
$arr = array();
for ($i = 0; $i <= $num - 1; ++$i) {
$t = strtotime("+$i month", $old_time);
$arr[] = date('Y-m', $t);
}
return $arr;
}