PHP实现指定时间的n月之前的这一天的两种算法
来源:互联网 发布:do while vb 编辑:程序博客网 时间:2024/04/30 13:27
/***根据$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);}
0 0
- PHP实现指定时间的n月之前的这一天的两种算法
- 获得指定时间的下一天的N种方法
- 实现数组元素倒序的算法,写出两种实现,时间复杂度为O(n)和O(n/2)
- Calendar实现得到指定月的第一天和最后一天
- shell删除指定时间之前的文件
- 【Shell】删除指定时间之前的文件
- 删除指定时间之前的文件
- find删除指定时间之前的文件
- php获取指定月的 起止时间戳
- PHP获取指定月份的第一天开始和最后一天结束的时间戳函数
- PHP获取指定月份的第一天开始和最后一天结束的时间戳函数
- php获取指定月份的第一天开始和最后一天结束的时间戳
- PHP获取指定月份的第一天开始和最后一天结束的时间戳函数
- 指定月的第一天和最后一天
- LeetCode 135. Candy (O(n)时间 O(n)和O(1)空间的两种实现)
- PHP获取指定日期所在月的第一天和最后一天
- PHP中"多少时间之前的"做法
- js获得当前时间前后n天、n月、n年日期的一个简单实现
- 如何解决git工程文件冲突?
- Android按钮文字变色(使用 ColorStateList)
- JVM启动参数解析
- TwoSum
- unity3d如何有效地组织代码?
- PHP实现指定时间的n月之前的这一天的两种算法
- CVTRES : fatal error CVT1100: duplicate resource. type:DIALOG, name:1269, language:0x0804
- YII 的安全性演示代码SQL
- IOS高级教程1:处理1000张图片的内存优化
- 黑马程序员--动态代理
- 生活意味着什么?
- 动态规划
- Android中如何自己制作su
- 配置rhel 6.4(64位)安装使用syslog-ng 3.5