/**
* 获取具体日期N个月前(后)的自然月时间戳
*
* $date 日期(时间戳) 1580400000
* $num 前后多少个月,例如:前一个月:-1 ;后一个月:1
*/
function getStrtotime($date,$num)
{
// $num = 2;
// $date = 1580400000;//2020-01-31
$addText = $num.'month';
$time = strtotime($addText,$date);//按天数转化后的时间戳
$lastD = date("j",$time);//转化后的日期---几号
$firstD = date("j",$date);//转化前的日期---几号
if ($lastD == $firstD) {//加减前后的时间的日期(几号)相同
return $time;
}else{
$text = '-'.$lastD.'day';//减去转化后的日期就是目标月份的最后一日的日期
$time = strtotime($text,$time);
return $time;
}
return $time;
}
(踩了strtotime的坑后处理方法)有更有效简洁的欢迎留言