加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php计算年龄精准到年月日

发布时间:2020-12-13 02:56:45 所属栏目:PHP教程 来源:网络整理
导读:《php计算年龄精准到年月日》要点: 本文介绍了php计算年龄精准到年月日,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解php计算年龄精准到年月日的办法.供大家参考研究.具体如下: PHP实战 ?php /* * To change this license header,choos

《php计算年龄精准到年月日》要点:
本文介绍了php计算年龄精准到年月日,希望对您有用。如果有疑问,可以联系我们。

本篇章节讲解php计算年龄精准到年月日的办法.分享给大家供大家参考.具体如下:PHP实战

<?php
 
/*
 * To change this license header,choose License Headers in Project Properties.
 * To change this template file,choose Tools | Templates
 * and open the template in the editor.
 */
 
class Age {
   
  /**
   * 计算年龄精准到年月日
   * @param type $birthday
   * @return array
   */
 
  public function calAge($birthday) {
    list($byear,$bmonth,$bday) = explode('-',$birthday);
    list($year,$month,$day) = explode('-',date('Y-m-d'));
    $bmonth = intval($bmonth);
    $bday = intval($bday);
    if ($bmonth < 10) {
      $bmonth = '0' . $bmonth;
    }
    if ($bday < 10) {
      $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,$bday);
      list($byear,$bday) = array($year,$day);
      list($year,$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,$day),array($byear,$bday));
    return array('year' => $years,'month' => $m,'day' => $d,'not_birth' => $not_birth);
  }
 
  /**
   * 只能用于一年内计算
   * @param type $ymd
   * @param type $bymd
   */
  public function getMD($ymd,$bymd) {
    list($y,$m,$d) = $ymd;
    list($by,$bm,$bd) = $bymd;
    if (($m . $d) < ($bm . $bd)) {
      $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;
  }
 
}
 
$cage = new Age();
$test = array(
  '1990-06-12','1990-07-13','1990-08-16','1990-10-10','1990-10-13','1990-10-15','1990-11-9','1990-11-22','2016-11-22','2016-8-22','2016-10-13',);
echo date('Y-m-d');
echo '<pre>';
foreach($test as $v){
  $tmp = $cage->calAge($v);
  echo $v,':',$tmp['year'],'年',$tmp['month'],'月',$tmp['day'],'天',';',$tmp['not_birth'],'<br>';
}
echo '</pre>' ;
 
 
/*
  运行结果:
  2015-10-13
  1990-06-12:25年4月1天;0
  1990-07-13:25年3月0天;0
  1990-08-16:25年1月27天;0
  1990-10-10:25年0月3天;0
  1990-10-13:25年0月0天;0
  1990-10-15:24年11月28天;0
  1990-11-9:24年11月4天;0
  1990-11-22:24年10月21天;0
  2016-11-22:1年1月9天;1
  2016-8-22:0年10月9天;1
  2016-10-13:1年0月0天;1
 
 * 
 */

希望本文所述对大家学习php程序设计有所赞助.
PHP实战

编程之家培训学院每天发布《php计算年龄精准到年月日》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读