Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: получить года

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
jonston
Отправлено: 08 Февраля, 2012 - 15:39:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




Здравствуйте!Скажите как получить точные года если имеешь разность между time() и датой рождения в timestamp?Спасибо за ответ!


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 08 Февраля, 2012 - 15:47:26
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1. $iYears=(time()-$timestamp)/(60*60*24*365);


?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jonston
Отправлено: 08 Февраля, 2012 - 15:53:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




EuGen пишет:
PHP:
скопировать код в буфер обмена
  1. $iYears=(time()-$timestamp)/(60*60*24*365);


?

Я наверное неправильно сформулировал.Нужны года int не float но так что бы человек например рожденный в 1 января 1985 года не увидел что ему 25 или 27.В общем нужно получить года с учетом дня и месяца рождения и нынешнего месяца и дня в целочисленом выражении.

(Отредактировано автором: 08 Февраля, 2012 - 15:54:19)



-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 08 Февраля, 2012 - 15:55:28
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Так округлять до ближайшего меньшего целого:
PHP:
скопировать код в буфер обмена
  1. $iYears=floor((time()-$timestamp)/(60*60*24*365));

Если таймштамп - имеется ввиду строка, то воспользуйтесь чем-то наподобие strtotime


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jonston
Отправлено: 08 Февраля, 2012 - 16:02:10
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




EuGen пишет:
Так округлять до ближайшего меньшего целого:
PHP:
скопировать код в буфер обмена
  1. $iYears=floor((time()-$timestamp)/(60*60*24*365));

Если таймштамп - имеется ввиду строка, то воспользуйтесь чем-то наподобие strtotime

нет не строка.Это выражение будет показывать всегда правильно?Если если пользователь рожден середине года.Результат будет всегда одинаковым и если time() = конец года и если time() = начало года и если time() = за день до дня рождения и если на один день после дня рождения?


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 08 Февраля, 2012 - 16:03:59
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Вообще - нет, так как есть еще високосные года и т.п.
Более правильно:
http://php.net/manual/en/function.date-diff.php

(читайте комментарии, много полезного)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jonston
Отправлено: 08 Февраля, 2012 - 16:06:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




EuGen пишет:
Вообще - нет, так как есть еще високосные года и т.п.
Более правильно:
http://php.net/manual/en/function.date-diff.php

(читайте комментарии, много полезного)

какова погрешность в днях примерно?


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 08 Февраля, 2012 - 16:09:20
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




jonston
Ну сами посчитайте - 1 день за 4 года. Вот и погрешность 0.25*(число лет) будет. Существенно довольно при граничных днях.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
snikers987
Отправлено: 08 Февраля, 2012 - 16:09:36
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




PHP:
скопировать код в буфер обмена
  1. $iYears=floor((time()-$timestamp)/(60*60*24*(date('L') == 1 ? 366 : 365)));

Не уверен в выражении, но как-то так


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
jonston
Отправлено: 08 Февраля, 2012 - 16:09:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




EuGen пишет:
Вообще - нет, так как есть еще високосные года и т.п.
Более правильно:
http://php.net/manual/en/function.date-diff.php

(читайте комментарии, много полезного)

Спасибо!Успехов!
(Добавление)
snikers987 пишет:
PHP:
скопировать код в буфер обмена
  1. $iYears=floor((time()-$timestamp)/(60*60*24*(date('L') == 1 ? 366 : 365)));

Не уверен в выражении, но как-то так

что обозначает date('L')?


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 08 Февраля, 2012 - 16:21:58
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




snikers987 пишет:
$iYears=floor((time()-$timestamp)/(60*60*24*(date('L') == 1 ? 366 : 365)));

То есть если идет високосный год, будет делиться на 366, иначе на 365? Это неправильно, т.к. задача в том, чтобы учесть дни високосных лет в интервале дат (а это выражение будет считать все предыдущие годы високосными, если идет високосный год, и невисокосными - иначе)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jonston
Отправлено: 08 Февраля, 2012 - 16:24:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




jonston пишет:
EuGen пишет:
Вообще - нет, так как есть еще високосные года и т.п.
Более правильно:
http://php.net/manual/en/function.date-diff.php

(читайте комментарии, много полезного)

Спасибо!Успехов!
(Добавление)
snikers987 пишет:
PHP:
скопировать код в буфер обмена
  1. $iYears=floor((time()-$timestamp)/(60*60*24*(date('L') == 1 ? 366 : 365)));

Не уверен в выражении, но как-то так

что обозначает date('L')?

то есть выражение гласит если сейчас високосный год то дели на года которые все будут високосные.Это не правильно.


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB