- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
class ZDate extends Logic
{
/**
* return age
*
* @param integer $birthday
* @return string
*/
public static function getAge($birthday)
{
$year = date('Y', $birthday);
$month = date('m', $birthday);
$day = date('d', $birthday);
$cur_year = date('Y');
$cur_month = date('m');
$cur_day = date('d');
$age = $cur_year - $year;
if ($cur_month < $month) --$age;
if ($cur_month == $month && $cur_day < $day) --$age;
return (string) $age;
}
}
guest 05.10.2009 12:11 # 0
guest 05.10.2009 12:22 # 0
guest 05.10.2009 12:53 # +1
Oleg_quadro 05.10.2009 13:30 # 0
можно в секунды от 70 года каждую дату приводить. Отнимать от текущей даты дату день рождения. делить полученое на 365 дней.
guest 05.10.2009 13:41 # 0
Все уже учтено
> Отнимать от текущей даты дату день рождения. делить полученое на 365 дней.
Почему на 365, а не на 365.25? Такой способ подойдет, если до дня рождения больше одного-два дня. Из-за високосных годов может быть погрешность около даты рождения
prostosergik 05.10.2009 14:54 # −2
{
return intval((time() - $timestamp) / 31556926);
}
guest 05.10.2009 15:15 # 0
См. мой коммент выше около по поводу погрешности около даты рождения
prostosergik 05.10.2009 16:34 # 0
guest 05.10.2009 16:57 # +1
меняя
$now = mktime(0,0,0,10,5,2015);
$year = 2008;
Имеем в первом случае (день рождения 5.10.2007) возраст
4.10.2014 - 7 лет
5.10.2014 - 7 лет (сегодня - правильный возраст)
6.10.2014 - 6 лет
Имеем в втором случае (день рождения 5.10.2008) возраст
4.10.2015 - 7 лет
5.10.2015 - 6 лет (о боже, у меня сегодня день рождения, а мне еще 6 лет)
6.10.2015 - 6 лет
guest 05.10.2009 16:58 # 0
Может так прокатит
prostosergik 05.10.2009 18:01 # +1
guest 05.10.2009 20:05 # 0
guest 05.10.2009 17:06 # +1
anmiles 06.10.2009 17:48 # +1
Долой велосипеды!
guest 06.10.2009 21:16 # 0
Shock 13.10.2009 23:22 # +1