首页 > Web开发 > 详细

PHP年龄计算 取得两个时间戳相差的年龄年月日显示

时间:2014-07-22 22:37:45      阅读:723      评论:0      收藏:0      [点我收藏+]

因需要显示对象的年龄,在网上找了几个看着不是太理想,自己写了一个,取得两个时间戳相差年龄的函数,显示结果为x岁x月x天,年月为零时,不显示年月,原理为:年月日相减,数不够的,按年和月的进位借数,最终得到年月日的时间值。

<?PHP
/*
 * ==============================
 * 此方法由 mantye 提供  
 * http://my.oschina.net/u/223350 
 * @date 2014-07-22
 * ==============================
 * @description    取得两个时间戳相差的年龄
 * @before         较小的时间戳
 * @after          较大的时间戳
 * @return str     返回相差年龄y岁m月d天
**/
function datediffage($before, $after) {
 if ($before>$after) {
  $b = getdate($after);
  $a = getdate($before);
 }
 else {
  $b = getdate($before);
  $a = getdate($after);
 }
 $n = array(1=>31,2=>28,3=>31,4=>30,5=>31,6=>30,7=>31,8=>31,9=>30,10=>31,11=>30,12=>31);
 $y=$m=$d=0;
 if ($a[‘mday‘]>=$b[‘mday‘]) { //天相减为正
  if ($a[‘mon‘]>=$b[‘mon‘]) {//月相减为正
   $y=$a[‘year‘]-$b[‘year‘];$m=$a[‘mon‘]-$b[‘mon‘];
  }
  else { //月相减为负,借年
   $y=$a[‘year‘]-$b[‘year‘]-1;$m=$a[‘mon‘]-$b[‘mon‘]+12;
  }
  $d=$a[‘mday‘]-$b[‘mday‘];
 }
 else {  //天相减为负,借月
  if ($a[‘mon‘]==1) { //1月,借年
   $y=$a[‘year‘]-$b[‘year‘]-1;$m=$a[‘mon‘]-$b[‘mon‘]+12;$d=$a[‘mday‘]-$b[‘mday‘]+$n[12];
  }
  else {
   if ($a[‘mon‘]==3) { //3月,判断闰年取得2月天数
    $d=$a[‘mday‘]-$b[‘mday‘]+($a[‘year‘]%4==0?29:28);
   }
   else {
    $d=$a[‘mday‘]-$b[‘mday‘]+$n[$a[‘mon‘]-1];
   }
   if ($a[‘mon‘]>=$b[‘mon‘]+1) { //借月后,月相减为正
    $y=$a[‘year‘]-$b[‘year‘];$m=$a[‘mon‘]-$b[‘mon‘]-1;
   }
   else { //借月后,月相减为负,借年
    $y=$a[‘year‘]-$b[‘year‘]-1;$m=$a[‘mon‘]-$b[‘mon‘]+12-1;
   }
  }
 }
 return ($y==0?‘‘:$y.‘岁‘).($m==0?‘‘:$m.‘个月‘).($d==0?‘‘:$d.‘天‘);
}
?>

 

PHP年龄计算 取得两个时间戳相差的年龄年月日显示,布布扣,bubuko.com

PHP年龄计算 取得两个时间戳相差的年龄年月日显示

原文:http://my.oschina.net/u/223350/blog/293687

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!