Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Алгоритм расчёта даты Пасхи для любого года
Молодая Русь > Общий раздел > Общение
BrainWorker
Код
/* ---------------------------------------------------------------------
* Алгоритм расчёта даты Пасхи для любого года
* Параметры:
*    year - год, для которого расчитывается дата Пасхи
*    newStyle - флаг, указывающий по старому или новому стилю выдавать дату (по умолчанию: новый стиль)
* Результат:
*    дата Пасхи в формате YYYY-MM-DD
* ----------------------------------------------------------------------- */

function calculateEaster ($year, $newStyle = true)
{
   $a = $year % 19;
   $b = $year % 4;
   $c = $year % 7;
   $d = (19*$a + 15) % 30;
   $e = (2*$b + 4*$c + 6*$d + 6) % 7;

   if ($d + $e <= 9)
   {
      $month = 3;
      $day = $d + $e + 22;
   }
   else
   {
      $month = 4;
      $day = $d + $e - 9;
      if ($day == 26)
         $day = 19;
   }

   if (($e == 6) && ($day == 28))
      $day = 18;

   //--------------------------------------------
   if ($newStyle)
   {
      $daysInMonths = array (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
      $leapYear = ($year % 4 == 0) && (($year % 100 != 0) || ($year % 400 == 0));
      if ($leapYear)
         $daysInMonths[1]++;

      $day += 13;   // новый стиль отличается от старого на 13 дней
      if ($day > $daysInMonths[$month - 1])
      {
        $day -= $daysInMonths[$month - 1]);
        $month++;
      }
   }

   return $year . "-" . $month . "-" . $day;
}
Каterина
Класс! smile.gif
а вот еще ссылочка в тему...
http://www.imperis.ru/index.php?razdel_id=976
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2026 IPS, Inc.