求每个月天数 php,PHP计算一段时间的年月天数

class CalAge {

public function getAge($date_value) {

$str_time=strtotime($date_value);

$year = date("Y",$str_time);

$month = date("m",$str_time);

$day = date("d",$str_time);

$byear=2020;

$bmonth = 6;

$bday = 4;

if ($bmonth 

$bmonth = '0' . $bmonth;

}

if ($bday 

$bday = '0' . $bday;

}

$bi = intval($byear . $bmonth . $bday);

$ni = intval($year . $month . $day);

$not_birth = 0;

if ($bi > $ni) {

$not_birth =1;

$tmp = array($byear, $bmonth, $bday);

list($byear, $bmonth, $bday) = array($year, $month, $day);

list($year, $month, $day) = $tmp;

list($bi, $ni) = array($ni, $bi);

}

$years = 0;

while (($bi + 10000) <= $ni) {//先取岁数

$bi += 10000;

$years++;

$byear++;

}//得到岁数后 抛弃年

list($m, $d) = $this->_getMD(array($year, $month, $day), array($byear, $bmonth, $bday));

if($not_birth==1)

$shengri="(生日)";

else

$shengri="";

return $years."岁".$m."月".$d."天"." ".$shengri;

}

/**

* 只能用于一年内计算

* @param type $ymd

* @param type $bymd

*/

private function _getMD($ymd, $bymd) {

list($y, $m, $d) = $ymd;

list($by, $bm, $bd) = $bymd;

if (($m . $d) 

$m +=12;

}

$month = 0;

while ((($bm . $bd) + 100) <= ($m . $d)) {

$bm++;

$month++;

}

if ($bd <= $d) {//同处一个月

$day = $d - $bd;

} else {//少一个月

$mdays = $bm > 12 ? $this->_getMothDay(++$by, $bm - 12) : $this->_getMothDay($by, $bm);

$day = $mdays - $bd + $d;

}

return array($month, $day);

}

private function _getMothDay($year, $month) {

switch ($month) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

$day = 31;

break;

case 2:

$day = (intval($year % 4) ? 28 : 29); //能被4除尽的为29天其他28天

break;

default:

$day = 30;

break;

}

return $day;

}

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值