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 Пример получения метки времени Unix функцией 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 Пример получения метки времени Unix функцией 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 года