时间:2021-07-01 10:21:17 帮助过:17人阅读
/***根据$endtime,返回指定$monthes月之前的日*/function severalMonthAgo($endtime,$monthes){if (!$endtime) { return false;}if (!is_int($monthes) || $monthes <=0) { return false;}$m = date("m",$endtime);$y = date("Y",$endtime);$d = date("d",$endtime);$year = floor($monthes/12);$monthes_mod = $monthes%12;if($year == 0){//<12个月 if($m < $monthes){ //当前月份小于n月前 $res_y = $y-1; $res_m = 12-($monthes-$m); $t = date("t",strtotime($res_y."-".$res_m."-01")); if($d<$t){ $res_d = $d; }else{ $res_d = $t; } }elseif($m == $monthes){ $res_y = $y-1; $res_m = 12; $t = date("t",strtotime($res_y."-".$res_m."-01")); if($d<$t){ $res_d = $d; }else{ $res_d = $t; } }elseif($m>$monthes){ $res_y = $y; $res_m = $m-$monthes; $t = date("t",strtotime($res_y."-".$res_m."-01")); if($d<$t){ $res_d = $d; }else{ $res_d = $t; } }}elseif($year>0){ $y = $y-$year; $monthes = $monthes_mod; if($m < $monthes){ //当前月份小于n月前 $res_y = $y-1; $res_m = 12-($monthes-$m); $t = date("t",strtotime($res_y."-".$res_m."-01")); if($d<$t){ $res_d = $d; }else{ $res_d = $t; } }elseif($m == $monthes){ $res_y = $y-1; $res_m = 12; $t = date("t",strtotime($res_y."-".$res_m."-01")); if($d<$t){ $res_d = $d; }else{ $res_d = $t; } }elseif($m>$monthes){ $res_y = $y; $res_m = $m-$monthes; $t = date("t",strtotime($res_y."-".$res_m."-01")); if($d<$t){ $res_d = $d; }else{ $res_d = $t; } }}return strtotime($res_y."-".$res_m."-".$res_d);}/***根据$endtime,返回指定$monthes月之前的日*/function severalMonthAgoEx($endtime,$monthes){if (!$endtime) { return false;}if (!is_int($monthes) || $monthes <=0) { return false;}$m = date("m",$endtime);$y = date("Y",$endtime);$d = date("d",$endtime);$year = floor($monthes/12);$monthes_mod = $monthes%12;$y -= $year;//$year =0或>0;//$monthes_mod =0或>0或if ($year>0) { if ($monthes_mod>0) { $m_diff = 12+$m-$monthes_mod; $m_diff_div = floor($m_diff/12); $m_diff_mod = $m_diff%12; if ($m_diff_div > 0) { $res_y = $y; $res_m = $m_diff_mod; }elseif ($m_diff_div == 0) { $res_y = $y -1; $res_m = $m_diff_mod; } }elseif ($monthes_mod==0) { //整除 $res_y = $y; $res_m = $m; }}elseif ($year == 0) { $m_diff = 12+$m-$monthes_mod; $m_diff_div = floor($m_diff/12); $m_diff_mod = $m_diff%12; if ($m_diff_div > 0) { $res_y = $y; }elseif ($m_diff_div == 0) { $res_y = $y -1; } $res_m = $m_diff_mod;}$t = date("t",strtotime($res_y."-".$res_m."-01"));if($d<$t){ $res_d = $d;}else{ $res_d = $t;}return strtotime($res_y."-".$res_m."-".$res_d);}