IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Алгоритм расчёта даты Пасхи для любого года, на PHP
BrainWorker
сообщение 21.11.2007, 17:09
Сообщение #1


ТРЕЗВЕННИК
***

Группа: Участники
Сообщений: 4728
Регистрация: 14.5.2005
Из: Дубна
Пользователь №: 132
Вероисповедание: Другое
Молодежная организация: Не в организации



Код
/* ---------------------------------------------------------------------
* Алгоритм расчёта даты Пасхи для любого года
* Параметры:
*    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ина
сообщение 21.11.2007, 17:22
Сообщение #2


Активный участник
***

Группа: Участники
Сообщений: 1121
Регистрация: 28.12.2006
Из: Подмосковье
Пользователь №: 1455
Вероисповедание: Православие, РПЦ
Молодежная организация: Другая



Класс! smile.gif
а вот еще ссылочка в тему...
http://www.imperis.ru/index.php?razdel_id=976
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 17.6.2026, 8:11