Categories: PHP Скрипты

Количество лет, месяце и дней, прошедших со дня рождения

Скрипт предназначен для точного вычисления количества лет, месяцев и дней, прошедших с определенной даты, например, дня рождения.

Числа, которые получаются в результате вычисления склоняются в соответствии с правилами русского языка.

Имеется ограничение: так как используются даты в формате UNIXSTAMP, скрипт работает только с датами после 1 января 1970 года.

Реализация

<?php 
  // 24 января 1985 года
  $birthday = mktime(0, 0, 0, 1, 24, 1985);
  echo birthday($birthday);   // Количество лет, месяцев и дней, прошедших со дня рождения
  function birthday($sec_birthday)
  {
    // Сегодняшняя дата
    $sec_now = time();
    // Подсчитываем количество месяцев, лет
    for($time = $sec_birthday, $month = 0; 
        $time < $sec_now; 
        $time = $time + date('t', $time) * 86400, $month++){
        $rtime = $time;
        }
    $month = $month - 1;
    // Количество лет
    $year = intval($month / 12);
    // Количество месяцев
    $month = $month % 12;
    // Количество дней
    $day = intval(($sec_now - $rtime) / 86400);
    $result = declination($year, "год", "года", "лет")." ";
    $result .= declination($month, "месяц", "месяца", "месяцев")." ";
    $result .= declination($day, "день", "дня", "дней")." ";
    return $result;
  }   // Склонение числа $num
  function declination($num, $one, $ed, $mn, $notnumber = false)
  {  
    // $one="статья";  
    // $ed="статьи";  
    // $mn="статей";  
    if($num === "") print "";
    if(($num == "0") or (($num >= "5") and ($num <= "20")) or preg_match("|[056789]$|",$num))
      if(!$notnumber)
        return "$num $mn";
      else
        return $mn;
    if(preg_match("|[1]$|",$num))
      if(!$notnumber)
        return "$num $one";
      else
        return $one;
    if(preg_match("|[234]$|",$num))
      if(!$notnumber)
        return "$num $ed";
      else
        return $ed;
  }
?>
admin2

Share
Published by
admin2

Recent Posts

Почему лучше всего инвестировать в квартиры с двумя спальнями?

В сфере инвестиций в недвижимость выбор типа недвижимости может существенно повлиять на доходность и долгосрочную…

2 месяца ago

Майнинг в деревнях — Учебное пособие

1 000 000 человек уже занимаются ГОРЯЧИМ майнингом, и мы рады сообщить, что открываем новый…

2 месяца ago

Mine HOT: майнинг криптовалюты

NEAR Wallet — это мини-приложение в Telegram для хранения NEAR, USDT и добычи HOT. Майнинг…

2 месяца ago

Почему аренда коммерческой недвижимости в Энгельсе — ваша лучшая инвестиция

Аренда коммерческой недвижимости — это ключевой элемент успешного бизнеса в любом городе, включая Энгельс. Это не просто…

3 месяца ago

Покупка готового бизнеса в Костроме

В наше время все больше предпринимателей обращают внимание на перспективы покупки готового бизнеса, особенно в…

4 месяца ago

Notcoin, как играть

Новый 2024 год в криптосообществе начался с ажиотажа по поводу новой игры и потенциально будущей…

4 месяца ago