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

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

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

А ваш вариант сырой.
PHP:
$date1 = '1991-01-01';
$date2 = '1991-01-02';
Например
 
Математика на уровне 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;
}
 
Сверху