Вход Регистрация
» Описание: Код предназначен для точного вычисления количества лет, месяцев и дней, прошедших с определенной даты, например, дня рождения. Числа, которые получаются в результате вычисления склоняются в соответствии с правилами русского языка. Имеется ограничение: так как используются даты в формате UNIXSTAMP, скрипт работает только с датами после 1 января 1970 года.
» Добавил: * -=(C)DRU987=-
» Время добавления: 4 Янв 2015 в 17:29
» Посмотров: 744
» textarea
» Рейтинг: [+0 | -0]
Комментарии [0]
  1. // 25 января 1985 года
  2. $birthday = mktime(0, 0, 0, 1, 25, 1985);
  3. echo birthday($birthday);
  4.  
  5. // Количество лет, месяцев и дней, прошедших со дня рождения
  6. function birthday($sec_birthday)
  7. {
  8. // Сегодняшняя дата
  9. $sec_now = time();
  10. // Подсчитываем количество месяцев, лет
  11. for($time = $sec_birthday, $month = 0;
  12. $time < $sec_now;
  13. $time = $time + date('t', $time) * 86400, $month++){
  14. $rtime = $time;
  15. }
  16. $month = $month - 1;
  17. // Количество лет
  18. $year = intval($month / 12);
  19. // Количество месяцев
  20. $month = $month % 12;
  21. // Количество дней
  22. $day = intval(($sec_now - $rtime) / 86400);
  23. $result = declination($year, "год", "года", "лет")." ";
  24. $result .= declination($month, "месяц", "месяца", "месяцев")." ";
  25. $result .= declination($day, "день", "дня", "дней")." ";
  26. return $result;
  27. }
  28.  
  29. // Склонение числа $num
  30. function declination($num, $one, $ed, $mn, $notnumber = false)
  31. {
  32. // $one="статья";
  33. // $ed="статьи";
  34. // $mn="статей";
  35. if($num === "") print "";
  36. if(($num == "0") or (($num >= "5") and ($num <= "20")) or preg_match("|[056789]$|",$num))
  37. if(!$notnumber)
  38. return "$num $mn";
  39. else
  40. return $mn;
  41. if(preg_match("|[1]$|",$num))
  42. if(!$notnumber)
  43. return "$num $one";
  44. else
  45. return $one;
  46. if(preg_match("|[234]$|",$num))
  47. if(!$notnumber)
  48. return "$num $ed";
  49. else
  50. return $ed;
  51. }
Онлайн: 10
Реклама