首页 > 开发 > PHP > 正文

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

2024-05-04 22:00:49
字体:大 中 小
来源:转载
供稿:网友

这篇文章主要介绍了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.  
  66. $cage = new Age(); 
  67. $test = array( 
  68.   '1990-06-12', 
  69.   '1990-07-13', 
  70.   '1990-08-16', 
  71.   '1990-10-10', 
  72.   '1990-10-13', 
  73.   '1990-10-15', 
  74.   '1990-11-9', 
  75.   '1990-11-22', 
  76.   '2016-11-22', 
  77.   '2016-8-22', 
  78.   '2016-10-13', 
  79. ); 
  80. echo date('Y-m-d'); 
  81. echo ' 
  82. '; 
  83. foreach($test as $v){ 
  84.   $tmp = $cage->calAge($v); 
  85.   echo $v , ':', $tmp['year'], '年', $tmp['month'], 
  86.  '月', $tmp['day'], '天', ';', $tmp['not_birth'], ' 
  87. '; 
  88. } 
  89. echo ' 
  90. ' ; 
  91.  
  92.  
  93. /* 
  94.   运行结果: 
  95.   2015-10-13 
  96.   1990-06-12:25年4月1天;0 
  97.   1990-07-13:25年3月0天;0 
  98.   1990-08-16:25年1月27天;0 
  99.   1990-10-10:25年0月3天;0 
  100.   1990-10-13:25年0月0天;0 
  101.   1990-10-15:24年11月28天;0 
  102.   1990-11-9:24年11月4天;0 
  103.   1990-11-22:24年10月21天;0 
  104.   2016-11-22:1年1月9天;1 
  105.   2016-8-22:0年10月9天;1 
  106.   2016-10-13:1年0月0天;1 
  107.  
  108.  *  
  109.  */ 

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表