easter_date

(PHP 4, PHP 5, PHP 7, PHP 8)

easter_dateПолучить метку времени Unix, соответствующую полуночи на Пасху в заданном году

Описание

easter_date(?int$year = null, int$mode = CAL_EASTER_DEFAULT): int

Возвращает метку времени Unix, соответствующую полуночи на Пасху в заданном году.

Дата Пасхи была установлена на Первом Никейском соборе в 325 году до н. э. в честь воскресенья, следовавшего за полнолунием, наступившим в день или после весеннего равноденствия. Считалось, что День весеннего равноденствия всегда наступает 21 марта, поэтому расчёт дня Пасхи сводился к определению даты полнолуния и следующего за ней воскресенья. Используемый здесь алгоритм введён Дионисием Малым около 532 года. В юлианском летоисчислении (до 1753 года) для отслеживания фаз луны использовался простой 19-летний цикл. В григорианском календаре (годы после 1753 - разработан Христофором Клавиусом и Алоизием Лилиусом и введён Папой Григорием XIII в октябре 1582, а в Великобритании и её колониях в сентябре 1752 г.) было добавлено 2 поправочных коэффициента, увеличивающих точность расчёта дат.

Список параметров

year

Год должен быть числом от 1970 до 2037 для 32-битных или 2 000 000 000 для 64-битных систем. Если не указан или null, будет использован текущий год по местному времени.

mode

Позволяет рассчитывать даты Пасхи на основе Юлианского календаря, если установлено значение CAL_EASTER_ALWAYS_JULIAN. Смотрите также константы календаря.

Возвращаемые значения

Возвращает дату Пасхи в виде метки времени Unix.

Ошибки

Будет выброшено исключение ValueError, если значение года окажется меньше 1970 или больше 2037 для 32-битных или 2 000 000 000 для 64-битных систем.

Список изменений

ВерсияОписание
8.3.0 На 64-битных системах параметр year теперь принимает значения в диапазоне от 1970 до 2 000 000 000.
8.0.0 Параметр year теперь может иметь значение null.
8.0.0 Будет выброшено исключение ValueError, если значение параметра year выходит за пределы допустимого диапазона. Ранее вызывалась ошибка уровня E_WARNING и функция возвращала false.

Примеры

Пример #1 Пример использования easter_date()

<?php

echo date("M-d-Y", easter_date(1999)); // Apr-04-1999
echo date("M-d-Y", easter_date(2000)); // Apr-23-2000
echo date("M-d-Y", easter_date(2001)); // Apr-15-2001

?>

Пример #2 Пример использования easter_date() с объектом класса DateTime

<?php

$timestamp
= easter_date(2023);

$datetime = new \DateTime();
$datetime->setTimestamp($timestamp);

echo
$datetime->format('M-d-Y'); // Apr-09-2023

?>

Примечания

Замечание:

Функция easter_date() полагается на работающие со временем системные функции библиотеки языка Си, а не на работающие с датой и временем внутренние функции PHP. Вследствие этого для определения часового пояса, в котором она должна работать, функция easter_date() использует переменную окружения TZ, а не заданный в PHP часовой пояс по умолчанию, что может привести к неожиданному поведению в сочетании с другими функциями PHP для работы с датами.

В качестве обходного пути для расчёта начала Пасхи в текущем часовом поясе PHP можно использовать функцию easter_days() с объектами классов DateTime и DateInterval следующим образом:

<?php
function get_easter_datetime($year) {
$base = new DateTime("$year-03-21");
$days = easter_days($year);

return
$base->add(new DateInterval("P{$days}D"));
}

foreach (
range(2012, 2015) as $year) {
printf("Пасха в %d году приходится на %s\n",
$year,
get_easter_datetime($year)->format('F j'));
}
?>

Результат выполнения приведённого примера:

Пасха в 2012 году приходится на April 8 Пасха в 2013 году приходится на March 31 Пасха в 2014 году приходится на April 20 Пасха в 2015 году приходится на April 5

Смотрите также

  • Функция easter_days() - Получить количество дней между 21 марта и Пасхой в заданном году для расчёта дня Пасхи до 1970 или после 2037 года
To Top