Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   как узнать возраст юзера? (https://forum.antichat.xyz/showthread.php?t=63405)

Дикс 04.03.2008 14:37

как узнать возраст юзера?
 
Есть дата рождения.
Есть текущая дата.
Надо узнать скока человеку лет.

В голове одна каша!

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

Naydav 04.03.2008 14:55

PHP код:

<?php

function calc_period($date_start$date_finish) {
                
$st explode('-'date('d-m-Y-H-i-s'$date_start));
                
$fin explode('-'date('d-m-Y-H-i-s'$date_finish));

                if ((
$seconds $fin[5] - $st[5]) < 0) {
                        
$fin[4]--;
                        
$seconds += 60;
                }

                if ((
$minutes $fin[4] - $st[4]) < 0) {
                        
$fin[3]--;
                        
$minutes += 60;
                }

                if ((
$hours $fin[3] - $st[3]) < 0) {
                        
$fin[0]--;
                        
$hours += 24;
                }

                if ((
$days $fin[0] - $st[0]) < 0) {
                        
$fin[1]--;
                        
$days date('t'mktime(100$st[1], $st[0], $st[2])) - $st[0] + $fin[0];
                }

                if ((
$months $fin[1] - $st[1]) < 0) {
                        
$fin[2]--;
                        
$months += 12;
                }

                
$years $fin[2] - $st[2];
                
                return array(
$seconds$minutes$hours$days$months$years);
}


// Примеры использования

$date_finish strtotime("1-03-2008");
$date_start strtotime("31-01-2008");

$result calc_period($date_start$date_finish);

echo 
'C ' date('h:i:s d-m-y'$date_start) . ' по 'date('h:i:s d-m-y'$date_finish) .' прошло ' $result[0] . ' секунд ' $result[1]. ' минут ' .$result[2] . ' часов ' .$result[3] . ' дней ' $result[4] . ' месяцев ' $result[5] . ' лет <br>';

?>


bul.666 04.03.2008 14:55

$текущая дата(секунды) - $рождения = date("ШАБЛОН ДАТЫ",$резултат);

Naydav 04.03.2008 15:01

Посчитать возраст человека, дата рождения которого хранится в поле DATE


PHP код:

SELECT name, IF ((MONTH(NOW())>MONTH(birthday)),(YEAR(NOW())-YEAR(birthday)),
IF ((
MONTH(NOW())>IF ((DAYOFMONTH(NOW())>=DAYOFMONTH(birthday)),(YEAR(NOW())-YEAR(birthday)),
IF ((
MONTH(NOW())>(YEAR(NOW())-YEAR(birthday)-1))) as years_old FROM person 


Дикс 04.03.2008 15:18

2 Naydav
спасибо! работает.

2 Bul
я так и делал. это неправильно.

Doom123 04.03.2008 19:56

Цитата:

я так и делал. это неправильно.
Врать только не надо)

PHP код:

<?php
$a 
mktime(0,0,0,9,1,1991);
$c time() - $a;
$d date("Y"$c);
$b $d 1970;
echo 
"Онотолию $b лет";
?>


Naydav 04.03.2008 21:20

Цитата:

Врать только не надо)


PHP код:

<?

$a 
mktime(0,0,0,3,5,2007);
$c time() - $a;
$d date("Y"$c);
$b $d 1970;
echo 
"Онотолию $b лет";


?>

Сегодня - 4 марта 2008 года:

>>Онотолию 1 лет

Хотя, будет 1, только завтра

Isis 04.03.2008 21:53

Записывать дату рождения в формате UNIXTIME
Далее выдираем time() - columntime = time..
Ну и date

Doom123 04.03.2008 22:02

Naydav

PHP код:

<? 

$a 
mktime(23,60,61,3,5,2007); 
$c time() - $a
$d date("Y"$c); 
$b $d 1970
echo 
"Онотолию $b лет"


?>


guest3297 04.03.2008 22:11

Толик знает ВСЕ!

.:EnoT:. 04.03.2008 22:17

Цитата:

Сообщение от Doom123
Naydav

PHP код:

<? 

$a 
mktime(23,60,61,3,5,2007); 
$c time() - $a
$d date("Y"$c); 
$b $d 1970
echo 
"Онотолию $b лет"


?>


исходя из этого скрипта, толяну всё равно 1 год =/
если уж полный возраст надо узнать (т.е. без учёта дня рождения), то зачем mktime и прочие извращенства использовать?
И кстати орфографическая ошибка...ОнотолЕй пишется через Е :D
PHP код:

<?php
$d 
date("Y");
$b $d 1970;
echo 
'Онотолею'$b'лет';
?>


Doom123 04.03.2008 22:24

Ы Прав=))))

но мк тайм всёравно нужен например дата рождения
01.09.1991 а сёдня дата 01.08.2008

2008-1991 = 17 а ему 17ти ещё нет))
Цитата:

исходя из этого скрипта, толяну всё равно 1 год =/
а да это посто не точность в секундах=\

Дикс 05.03.2008 11:13

PHP код:

<?php 
$a 
mktime(0,0,0,9,1,1991); 
$c time() - $a
$d date("Y"$c); 
$b $d 1970
echo 
"Онотолию $b лет"
?>

да ёпт, я это в первый раз именно так и реализовал!
гнилой этот метод в том, что если задать дату рождения 1915 - Онотолею блять минус сорок четыре года!! (соре за излишнюю эмоциональность. с новой аватарой я стал раздражительным =\)

ЗЫ трудна бля быть не таким как фсе =\

SleepShadowWeb 05.03.2008 16:20

function Change_year(bd_day, bd_month, bd_year)
{
var _age;
var d = new Date();

cur_day = d.getDate();
cur_month = d.getMonth() + 1;
cur_year = d.getFullYear();

_age = cur_year - bd_year;

if(cur_month < bd_month)
{
_age -= 1;
}
else if(cur_month == bd_month)
{
if(cur_day < bd_day) _age -= 1;
}

if(_age < 0) _age = 0;
return _age;
}

Дикс 06.03.2008 09:32

а причем тут собственно яваскрипт?
речь о пхп


Время: 08:40