(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