(PHP 4, PHP 5, PHP 7, PHP 8)
easter_date — Получает метку времени Unix, которая соответствует местной полночи на Пасху в заданном году
Функция возвращает метку времени 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