Создать скорректированный возраст с PHP - PullRequest
0 голосов
/ 08 января 2012

Я строю систему регистрации на PHP и мне нужно создать функцию, которая принимает дату рождения (в качестве временной метки) и возвращает возраст (31 апреля).Теперь у меня есть:

<?php
function get_adj_age($dob)
{
    $age = (time()-$dob);
    $today = strtotime(date('F d', time()));
    $diff = ($cutoff - $today);
    $adj_age = floor(($age+$diff)/31556926);

    return $adj_age;
}

Почему-то это ломает мне мозг.Кто-нибудь проверяет меня на это?Приветствия.

Ответы [ 2 ]

5 голосов
/ 08 января 2012
function adjustedAge($dob, $adjustTo = 'April 31') { // DOB can be of any format accepted by strtotime()
    return ((new DateTime($adjustTo.', '.date('Y')))->diff(new DateTime($dob)))->y;
}

По сути, для этого создается объект DateTime на 31 апреля текущего года, а затем вычитается дата рождения человека.В результате получается DateInterval , из которого извлекается и возвращается год.

0 голосов
/ 08 января 2012

Это довольно просто.Сначала получите текущее время и сохраните его в переменной.Затем получите возраст в миллисекундах (принимая во внимание, что до 1969 года временные метки были отрицательными, следовательно, троичный оператор).Возраст теперь указывается в миллисекундах, поэтому разделите его на количество миллисекунд в году (60 * 60 * 24 * 365)

function getAge($birth){
    $t = time();
    $age = ($birth < 0) ? ( $t + ($birth * -1) ) : $t - $birth;
    return floor($age/31536000);
}

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

$t = mktime(0, 0, 0, 4, 31, 2012); // <-- April 31st, 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...