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, $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 class="brush:php;toolbar:false">'; foreach($test as $v){ $tmp = $cage->calAge($v); echo $v , ':', $tmp['year'], '年', $tmp['month'], '月', $tmp['day'], '天', ';', $tmp['not_birth'], '<br>'; } echo '' ; /* 运行结果: 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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

CakePHP 是一个开源MVC 框架。它使开发、部署和维护应用程序变得更加容易。 CakePHP 有许多库可以减少大多数常见任务的过载。

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、
