使用YYYY MM DD格式的PHP计算年龄

时间:2013-03-11 14:59:12

标签: php

我正在尝试使用此代码来计算表单中字段的年龄。

<?php
   $birthDate = "$dob";

   $birthDate = explode("-", $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;
?>

但我无法使用输入字段的格式,即YYYY-MM-DD。

如果我将$ dob更改为PHP使用的欧盟标准格式的日期,它就像魅力一样。

有没有一些简单的方法可以解决这个问题?

3 个答案:

答案 0 :(得分:1)

始终注意日期符号(即年,月和日的顺序)。

这是有效的(原始代码改编):

<?php
$birthDate = "1984-05-21";

$birthDate = explode("-", $birthDate);

$age = (date("md", date("U", mktime(0, 0, 0, $birthDate[2], $birthDate[1], $birthDate[0]))) > date("md") ? ((date("Y")-$birthDate[0])-1):(date("Y")-$birthDate[0]));
echo "Age is: ".$age;
?>

答案 1 :(得分:0)

使用DateTime::diff功能

示例

<?php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2013-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%y years');
?>

答案 2 :(得分:0)

使用strtotime($dob)获取时间戳。然后以人的方式计算年龄:

list($dob_year, $dob_date) = explode('-', date('Y-md', strtotime($dob)));
list($cur_year, $cur_date) = explode('-', date('Y-md'));

$age = $cur_year - $dob_year - ($dob_date >= $cur_date ? 0 : 1);