function getMonthNum( $start_time, $end_time){
$date1 = explode('-',$start_time);
$date2 = explode('-',$end_time);
if($date1[0] == $date2[0]){ //同年
if($date1[1] == $date2[1]){ //同月
$month = 0;
$day = $date2[2]-$date1[2];
}else{
//不同月
$month = $date2[1]-$date1[1];
if($date1[2]>$date2[2]){
//开始天大于结束天:计算天数,月份减一
$day = date('t',strtotime($start_time))-($date1[2]-$date2[2]);
$month-=1;
}else{
//结束天大于开始天
$day = $date2[2]-$date1[2];
}
}
}else{
$month = 12;
//不同年
if($date1[1] == $date2[1]){ //同月
if($date1[2]>$date2[2]){
//开始天大于结束天:计算天数,月份减一
$day = date('t',strtotime($start_time))-($date1[2]-$date2[2]);
$month-=1;
}else{
//结束天大于开始天
$day = $date2[2]-$date1[2];
}
}else{
//不同月
if($date1[1]>$date2[1]){
//开始月大于结束月
$month -= $date1[1]-$date2[1];
if($date1[2]>$date2[2]){
//开始天大于结束天:计算天数,月份减一
$day = date('t',strtotime($start_time))-($date1[2]-$date2[2]);
$month-=1;
}else{
//结束天大于开始天
$day = $date2[2]-$date1[2];
}
}else{
//结束月大于开始月
$month += $date2[1]-$date1[1];
if($date1[2]>$date2[2]){
//开始天大于结束天:计算天数,月份减一
$day = date('t',strtotime($start_time))-($date1[2]-$date2[2]);
$month-=1;
}else{
//结束天大于开始天
$day = $date2[2]-$date1[2];
}
}
}
}
return [
'start_time'=>$start_time,
'end_time'=>$end_time,
'month'=>$month,
'day'=>$day,
];
}
调用getMonthNum
$this->getMonthNum('2022-02-04','2023-03-05');
输出
month---- 1
day---- 1
版权声明:本文为zdzzn1314原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。