我有一个表格,用户可以输入年,月和日的患者年龄。这将根据患者的出生日期将数据保存在数据库中。问题是我正在使用 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)
答案 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)
我写了一个简单的function
(Calc_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>
我希望这会有所帮助。