南强小屋 Design By 杰米
本文实例讲述了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程序设计有所帮助。
标签:
php,计算年龄
南强小屋 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米
暂无php计算年龄精准到年月日的评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。