我正在寻找一种方法来计算一个人的年龄,考虑到他们的DOB格式为dd/mm/yyyy.

我正在使用下面的函数,该函数在几个月内一直工作得很好,直到某种故障导致While循环永远不会结束,并使整个站点陷入停顿.由于每天有近10万个DOB使用此功能数次,因此很难查明是什么原因造成了这种情况.

有没有人有更可靠的计算年龄的方法?

//replace / with - so strtotime works
$dob = strtotime(str_replace("/","-",$birthdayDate));       
$tdate = time();

$age = 0;
while( $tdate > $dob = strtotime('+1 year', $dob))
{
    ++$age;
}
return $age;

编辑:该函数在某些时候似乎可以正常工作,但对于1986年9月14日的DOB,返回"40"

return floor((time() - strtotime($birthdayDate))/31556926);

推荐答案

这个很好用.

<?php
  //date in mm/dd/yyyy format; or it can be in other formats as well
  $birthDate = "12/17/1983";
  //explode the date to get month, day and year
  $birthDate = explode("/", $birthDate);
  //get age from date or birthdate
  $age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md")
    ? ((date("Y") - $birthDate[2]) - 1)
    : (date("Y") - $birthDate[2]));
  echo "Age is:" . $age;
?>

Php相关问答推荐

Woocommerce将自定义数据添加到自定义文件中购物车中的产品

Laravel通过(扩展FormRequest类)方法验证表单请求

如何在数据库中添加注册表单中的动态新行?

自定义通知在Woocommerce我的帐户自定义端点页面上不起作用

Laravel:让所有用户在一年中的特定月份休息几天

保存PHP条带以备将来使用,不显示用户界面

如何在Foreach语句中使用php和li按降序排序?

使注册字段UserMeta值对于WooCommerce中的每个用户是唯一的

将下拉 Select 的值从WooCommerce后端保存并显示到前端

是否使用联系人表单7 wpcf7_Feedback_Response输出答复中的html?

Laravel路由到控制器传输变量解决方案需要

在WooCommerce管理中为订单项目添加自定义字段价格值

文件::Files()响应返回空对象数组

打折时更改 Woocommerce 产品名称

添加产品标签以通过 WooCommerce 邮箱通知订购商品

从 Laravel 机制中排除目录并直接访问该目录

htaccess Rewriterule 无法以任何方式工作

Woocommerce API 的 PHP Curl 附加参数

如何从 PHP 中的 .txt 文件中列出今天生日的人的姓名?

用于检测此模式的正则表达式:something;something=something,something=something... 未知次数