(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 Пример использования 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