php计算年龄精准到年月日的程序

四月 01, 2019 | views
Comments 0

这篇文章主要介绍了php计算年龄精准到年月日的方法,涉及php操作日期与字符串的相关技巧,非常简单实用,需要的朋友可以参考下.

本文实例讲述了php计算年龄精准到年月日的方法,分享给大家供大家参考,具体如下:

  1. $ni) { 
  2.       $not_birth = 1; 
  3.       $tmp = array($byear$bmonth$bday); 
  4.       list($byear$bmonth$bday) = array($year$month$day); 
  5.       list($year$month$day) = $tmp
  6.       list($bi$ni) = array($ni$bi); 
  7.     } 
  8.     $years = 0; 
  9.     while (($bi + 10000) <= $ni) {//先取岁数 
  10.       $bi += 10000; 
  11.       $years++; 
  12.       $byear++; 
  13.     }//得到岁数后 抛弃年 
  14.     list($m$d) = $this->getMD(array($year$month$day), array($byear$bmonth$bday)); 
  15.     return array('year' => $years'month' => $m'day' => $d'not_birth' => $not_birth); 
  16.   } 
  17.  
  18.   /** 
  19.    * 只能用于一年内计算 
  20.    * @param type $ymd 
  21.    * @param type $bymd 
  22.    */ 
  23.   public function getMD($ymd$bymd) { 
  24.     list($y$m$d) = $ymd
  25.     list($by$bm$bd) = $bymd
  26.     if (($m . $d) < ($bm . $bd)) { 
  27.       $m +=12; 
  28.     } 
  29.     $month = 0; 
  30.     while ((($bm . $bd) + 100) <= ($m . $d)) { 
  31.       $bm++; 
  32.       $month++; 
  33.     } 
  34.     if ($bd <= $d) {//同处一个月 
  35.       $day = $d - $bd
  36.     } else {//少一个月 
  37.       $mdays = $bm > 12 ? $this->_getMothDay( ++$by$bm - 12) : $this->_getMothDay($by$bm); 
  38.       $day = $mdays - $bd + $d
  39.     } 
  40.     return array($month$day); 
  41.   } 
  42.  
  43.   private function _getMothDay($year$month) { 
  44.     switch ($month) { 
  45.       case 1: 
  46.       case 3: 
  47.       case 5: 
  48.       case 7: 
  49.       case 8: 
  50.       case 10: 
  51.       case 12: 
  52.         $day = 31; 
  53.         break
  54.       case 2: 
  55.         $day = (intval($year % 4) ? 28 : 29); //能被4除尽的为29天其他28天 
  56.         break
  57.       default
  58.         $day = 30; 
  59.         break
  60.     } 
  61.     return $day
  62.   } 
  63.  
  64.  
  65. $cage = new Age(); 
  66. $test = array
  67.   '1990-06-12'
  68.   '1990-07-13'
  69.   '1990-08-16'
  70.   '1990-10-10'
  71.   '1990-10-13'
  72.   '1990-10-15'
  73.   '1990-11-9'
  74.   '1990-11-22'
  75.   '2016-11-22'
  76.   '2016-8-22'
  77.   '2016-10-13'
  78. ); 
  79. echo date('Y-m-d'); 
  80. echo ' 
  81. '; 
  82. foreach($test as $v){ 
  83.   $tmp = $cage->calAge($v); 
  84.   echo $v , ':'$tmp['year'], '年'$tmp['month'], 
  85.  '月'$tmp['day'], '天'';'$tmp['not_birth'], ' 
  86. '; 
  87. echo ' 
  88. ' ; 
  89.  
  90.  
  91. /* 
  92.   运行结果: 
  93.   2015-10-13 
  94.   1990-06-12:25年4月1天;0 
  95.   1990-07-13:25年3月0天;0 
  96.   1990-08-16:25年1月27天;0 
  97.   1990-10-10:25年0月3天;0 
  98.   1990-10-13:25年0月0天;0 
  99.   1990-10-15:24年11月28天;0 
  100.   1990-11-9:24年11月4天;0 
  101.   1990-11-22:24年10月21天;0 
  102.   2016-11-22:1年1月9天;1 
  103.   2016-8-22:0年10月9天;1 
  104.   2016-10-13:1年0月0天;1 
  105.  
  106.  *  
  107.  */ 

希望本文所述对大家学习php程序设计有所帮助.



zend