php计算年龄精准到年月日

 更新时间:2015年11月24日 09:54  点击:3247

本文实例讲述了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, $bmonth, $bday);      list($byear, $bmonth, $bday) = array($year, $month, $day);      list($year, $month, $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, $month, $day), array($byear, $bmonth, $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程序设计有所帮助。

[!--infotagslink--]

相关文章

  • python 计算方位角实例(根据两点的坐标计算)

    今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
  • php计算年龄精准到年月日

    本文实例讲述了php计算年龄精准到年月日的方法。分享给大家供大家参考。具体如下:<&#63;php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, c...2015-11-24
  • JS实现购物车中商品总价计算

    这篇文章主要为大家详细介绍了JS实现购物车中商品总价的计算 ,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-07
  • JavaScript时间操作之年月日星期级联操作

    这篇文章主要介绍了JavaScript时间操作之级联日期选择操作,涉及到年、月、日、星期,感兴趣的小伙伴们可以参考一下...2016-01-18
  • sql通过日期判断年龄函数的示例代码

    这篇文章主要介绍了sql通过日期判断年龄函数,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-07-16
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • js用正则表达式筛选年月日的实例方法

    在本篇文章里小编给大家整理的是一篇关于js用正则表达式筛选年月日的实例方法,对此有兴趣的朋友们可以学习下。...2021-01-04
  • 基于javascript实现根据身份证号码识别性别和年龄

    这篇文章主要介绍了基于javascript实现根据身份证号码识别性别和年龄的相关资料,需要的朋友可以参考下...2016-01-24
  • C#实现计算一个点围绕另一个点旋转指定弧度后坐标值的方法

    这篇文章主要介绍了C#实现计算一个点围绕另一个点旋转指定弧度后坐标值的方法,涉及C#针对坐标的数学运算相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • c# 计算时间间隔的简单方法(推荐)

    下面小编就为大家带来一篇c# 计算时间间隔的简单方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C语言简单实现计算字符个数的方法

    这篇文章主要介绍了C语言简单实现计算字符个数的方法,涉及C语言针对字符串的简单遍历与判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-04-25
  • Unity实现汽车前后轮倒车轨迹计算

    这篇文章主要为大家详细介绍了Unity实现汽车前后轮倒车轨迹计算,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-13
  • Go语言计算指定年月天数的方法

    这篇文章主要介绍了Go语言计算指定年月天数的方法,实例分析了Go语言操作时间的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-05-05
  • Vue如何使用Dayjs计算常用日期详解

    这篇文章主要给大家介绍了关于Vue如何使用Dayjs计算常用日期的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-09
  • C#根据年月日计算星期几的函数

    这篇文章主要为大家详细介绍了C#实现根据年月日计算星期几的函数,感兴趣的小伙伴们可以参考一下...2020-06-25
  • 在SQLSERVER2005中实现素数计算

    我将提出一个挑战,谁能用SQLSEERVER提出计算素数最好的方法, 我用了一个新的特点CTE和某些TSQL实现,但均不理想,前者(CTE)有限制,而后者(TSQL)产生一百万个素数用了7分种 你可...2016-11-25
  • C#计算汽车行驶方向的方法分析

    这篇文章主要介绍了C#计算汽车行驶方向的方法,结合实例形式分析了C#数值计算的原理与相关技巧,需要的朋友可以参考下...2020-06-25
  • PHP计算上一个月的今天 今天是星期几

    本文章来给大家介绍关于PHP计算上一个月的今天 今天是星期几的程序演示实例过程,各位有需要了解的朋友可参考。 上一个月的今天 strtotime 有个小问题 代...2016-11-25
  • Vue3 响应式侦听与计算的实现

    这篇文章主要介绍了Vue3 响应式侦听与计算的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-11
  • C语言科学计算入门之矩阵乘法的相关计算

    这篇文章主要介绍了C语言科学计算入门之矩阵乘法的相关计算,文章中还介绍了矩阵相关的斯特拉森算法的实现,需要的朋友可以参考下...2020-04-25