Определение возраста по дате рождения

Тема в разделе "PHP", создана пользователем Albert22, 15 фев 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Всем привет
    Имеется дата рождения юзера, надобно подсчитать сколько ему лет в данный момент времени.
    В гугл не адресуйте, там всё плохо. Например:
    http://www.google.com.ua/search?q=php+подсчитать+возраст
    (убил второй результат)))

    Заранее спасибо.
     
  2. BuzzDD

    BuzzDD Постоялец

    Регистр.:
    9 фев 2009
    Сообщения:
    76
    Симпатии:
    5

    <?
    $g = 2008;
    $w = date("Y");
    $ds = $w - $g;
    echo "$ds";
    ?>
    Такое? Вообще так не делается эта функция,лучше через эксплоде/имплоде делать,если тебе ещё нужно будет определить всю дату.Но ты ведь попросил только сколько ему лет,вот тебе и самый просто скрипт,улучшь его и будет норм
     
  3. Derag

    Derag

    Регистр.:
    9 ноя 2008
    Сообщения:
    218
    Симпатии:
    44
    Ну написал бы формат, в каком эта дата имеется.
    Если в Unix времени(которая в секундах), то можно узнать текущее, потом из него вычесть то, и делить на 60сек*24часа*365дней=525600. Где то так...
    Ну, а если в обычном, типо 01.01.1990 то узнаём сегодняшнее, и эксплодом(регуляркой ну или как тебе будет удобнее) достаём года(у обоих дат), и вычитаем.
     
  4. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Ты знаешь, я как раз хотел написать что дата пока хранится в формате DATE Mysql (т.е. YYYY-MM-DD)
    Однако сразу же подумал, что мне всё равно в каком хранить, ибо есть же функция getdate() которая перегоняет в юникс и обратно. То есть, я могу при регистрации сразу загнать дату рождения в юникс, или же сохранить её в человекопонятном формате, а потом при надобности конвертировать.
    Так или иначе, в каком лучше, в таком и буду хранить.
    Я думал об этом, но ведб там ещё придётся заняться сексом с днём - узнать, прошёл ли он, а вместе с ним прошёл ли месяц, в котором родился юзер, и в зависимости от этого прибавлять или нет единицу...
     
  5. SiMM

    SiMM Создатель

    Регистр.:
    8 фев 2009
    Сообщения:
    41
    Симпатии:
    6
  6. advuser

    advuser Прохожие

    $date_denrozhdenita = "YYYY-MM-DD";
    $date_segodna = time2date(time());

    $time_tmp = date2time($date_denrozhdenita)

    $schotchik=0;
    пока(time2date($time_tmp)!=$date_segodna){
    $time_tmp+=60*60*24;
    $schotchik++;
    }


    Как тебе такой вариант подсчёта дней с учётов весокостных? ;)
     
  7. axaaxa

    axaaxa Постоялец

    Регистр.:
    28 янв 2009
    Сообщения:
    66
    Симпатии:
    3
    dob - поле DATE

    SELECT ((YEAR(CURRENT_DATE)-YEAR(dob)) - (RIGHT(CURRENT_DATE,5)<RIGHT(dob,5))) as age, ...

    все учтено
     
  8. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Вот на чистом PHP:
    PHP:
    $birthdate='1987-05-24';
    $secs time() - strtotime($birthdate);
    // secs - возраст чувака в секундах

    $years floor($secs/(365*24*3600));
     
  9. SiMM

    SiMM Создатель

    Регистр.:
    8 фев 2009
    Сообщения:
    41
    Симпатии:
    6
    Далеко не в каждом году 365 дней. Чем больше возраст человека - тем больше ошибка.
     
  10. axaaxa

    axaaxa Постоялец

    Регистр.:
    28 янв 2009
    Сообщения:
    66
    Симпатии:
    3
    На некоторых платформах с таким вариантом будет глюк с датами ранее 1 января 1970
     
Статус темы:
Закрыта.