PHP實現指定時間的n月之前的這一天的兩種演算法

來源:互聯網
上載者:User

標籤:php   演算法   

/***根據$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);}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.