Как преобразовать дату рождения в возраст (годы, месяцы, дни) и возраст (годы, месяцы, дни) в дату рождения в PHP? - PullRequest
0 голосов
/ 16 мая 2019

У меня есть форма, в которой пользователь может ввести возраст пациента в годах, месяцах и днях.Это сохранит данные в базе данных в соответствии с датой рождения пациента.Проблема в том, что я использую функцию 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 голосов
/ 16 мая 2019

Надеюсь, у вас все хорошо, я прочитал ваш вопрос и нашел следующее решение, основанное на моих исследованиях и моих знаниях.

Надеюсь, это поможет вам решить вашу проблему.

=> Чтобы получить общий год в зависимости от рождаемости, вы можете использовать следующий код.

$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 для проверки выходных данных.Используя это, вы определенно получите свой возраст по дате рождения.

Заранее спасибо!

0 голосов
/ 16 мая 2019

Я написал простую функцию Calc_Age(), чтобы вычислить это, она очень точная и точная, и я надеюсь, что это то, что вы ищете ... ниже моего кода:

<!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

Надеюсь, это поможет.

0 голосов
/ 16 мая 2019

Обновите следующую строку в вашем коде до этого:

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

Проверьте это здесь: http://sandbox.onlinephpfunctions.com/code/9dece465739e2315be32b7882ba3ca9a5d9d65b3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...