PHP实现指定时间的n月之前的这一天的两种算法

php中文网
发布: 2016-06-23 13:57:37
原创
966人浏览过

/***根据$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);}
登录后复制

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号