如何在PHP中将出生日期转换为年龄(年,月,日)和将年龄(年,月,天)转换为出生日期?

时间:2019-05-16 06:53:13

标签: php date datetime

我有一个表格,用户可以输入年,月和日的患者年龄。这将根据患者的出生日期将数据保存在数据库中。问题是我正在使用 strtotime()函数获取患者的DOB,但是当我想从生日列中获取日期以显示年龄(年,月,日)时,有时会显示1或2天(+-)的结果。我正在使用 date_diff()函数检索年龄(年,月,日)。我的问题有解决办法吗?


$today = date("Y-m-d");
$dateOfBirth = strtotime("$today -2 years -2 months -20 days");
$birthday = date("Y-m-d", $dateOfBirth);

//and then tried to retrieve the age from that date which give me wrong answer

$diff = date_diff(date_create($birthday), date_create($today));

echo $diff->y; // showing 2
echo $diff->m; // showing 2
echo $diff->d; // showing 22 (it should be 20)

3 个答案:

答案 0 :(得分:0)

将代码中的以下行更新为此:

$diff = date_diff(date_create($today), date_create($birthday));

在此处进行测试:http://sandbox.onlinephpfunctions.com/code/9dece465739e2315be32b7882ba3ca9a5d9d65b3

答案 1 :(得分:0)

希望您一切都好,我阅读了您的问题并根据我的研究和知识找到了以下解决方案。

我希望这可以帮助您解决问题。

=>要获取基于出生率的年份,可以使用以下代码。

$bday = new DateTime('10.01.2001'); // Your date of birth
$today = new Datetime(date('m.d.y'));
$diff = $today->diff($bday);
printf(' Your age : %d years, %d month, %d days', $diff->y, $diff->m, $diff->d); //You will get your age

您可以将代码复制并粘贴到Fiddle中以测试输出。 使用此功能,您肯定会按出生日期确定年龄。

提前谢谢!

答案 2 :(得分:0)

我写了一个简单的functionCalc_Age())来进行计算,它非常准确,准确,我希望它是您正在寻找的……code下面:

<!DOCTYPE html>

<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Patient Age Information</title>
</head>

<body>
<?php
  function Calc_Age($myday) {
    date_default_timezone_set('Europe/Rome');
    $birth = new DateTime($myday);
    $birth->format('Y-m-d');
    $today = new DateTime('NOW');
    $today->format('Y-m-d');
    $diffs = $today->diff($birth);
    $myage = $diffs->y . ($diffs->y == 1 ? ' year, ' : ' years, ');
    $myage .= $diffs->m . ($diffs->m == 1 ? ' month and ' : ' months and ');
    $myage .= $diffs->d . ($diffs->d == 1 ? ' day' : ' days');
    return $myage;
  }
?>



<h1>Patient: Angela Bennet</h1>

<p>Angela Bennet is <?php echo Calc_Age("1967-01-23"); ?> old</p>

<h1>Patient: Jhon Malkovich</h1>

<p>Jhon Malkovich is <?php echo Calc_Age("1977-04-14"); ?> old</p>

</body>

</html>

结果:

Patient Age Information

我希望这会有所帮助。