PHP年龄计算精确到天

  • 10,311

返回一个根据 timestamp 得出的包含有日期信息的关联数组 array。 返回的关联数组中的键名单元有以下几个:

返回的关联数组中的键名单元
键名 说明 返回值例子
"seconds" 秒的数字表示 059
"minutes" 分钟的数字表示 059
"hours" 小时的数字表示 023
"mday" 月份中第几天的数字表示 131
"wday" 星期中第几天的数字表示 0 (周日) 到 6 (周六)
"mon" 月份的数字表示 112
"year" 4 位数字表示的完整年份 比如: 19992003
"yday" 一年中第几天的数字表示 0365
"weekday" 星期几的完整文本表示 SundaySaturday
"month" 月份的完整文本表示,比如 January 或 March JanuaryDecember
0 自从 Unix 纪元开始至今的秒数,和 time()
的返回值以及用于 date() 的值类似。
系统相关,典型值为从 -2147483648
2147483647

 

<?php 
/*
 * @description    取得两个时间戳相差的年龄
 * @before         较小的时间戳
 * @after          较大的时间戳
 * @return str     返回相差年龄y岁m月d天
**/
echo datediffage("665769600","1513943332");
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.'天');
}
//转载:http://www.thinkphp.cn/code/2513.html
?>

jiaoben.it商城正式上线了。

PHP年龄计算精确到天

weinxin
我的微信
这是我的微信扫一扫
开拓者博主
  • 本文由 发表于 2017年12月22日20:43:49
  • 转载请务必保留本文链接:https://www.150643.com/470.html
匿名

发表评论

匿名网友 填写信息