Вычисление возраста

mani13

Новичок
white phoenix
всё равно гон
timestamp может быть отрицательным
это кривые либы винды не поддерживают отрицательные значения, но это уже их проблемы
 

white phoenix

Новичок
mani13
Что именно гон? Естественно исходя из здравого смысла очевидно что при отрицательном timestamp можно считать время как "до н.р.", но на практике, на данный момент, это не работает. Но, imho, timestamp нужен не для этого, а для того чтобы хранить современные даты.
 

mani13

Новичок
Потому что unix_timestamp не поддерживает даты раньше 1 января 1970 года, именно поэтому я и предложил последний вариант.
я уже писал какие диапозоны он поддерживает, это также можно найти и в мануале.

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

white phoenix

Новичок
Ну и какое отношение это имеет к топику? Можно и обои клеить через замочную скважину.
 

mani13

Новичок
white phoenix а к тому, что
Я бы наверно всё же не стал пользовать substr и abs, а использовал бы деление и округление - в этом случае мы получили бы универсальную функцию для вычисления разницы в годах между датами (как положительной, так и отрицательной).
Всё-таки более верно и ограничения timestamp всё-таки почти никакой роли не играют.

А ваш вариант сырой.
PHP:
$date1 = '1991-01-01';
$date2 = '1991-01-02';
Например
 

alexvp

Guest
Математика на уровне 1 класса :)

на вход "год-месяц-день"
PHP:
function calcAge($data)
{
    $thisD=date('d');   $thisM=date('m');   $thisY=date('Y');
    list($y,$m,$d)=explode("-",$data);

    $years=$thisY-$y-1;
    if($thisM>$m)$years++;
    if($thisM==$m and $thisD>=$d )$years++;
    return $years;
}
 
Сверху