Перейти к содержимому

easter_date()

Введение

По мере приближения Пасхи важно понимать, как программно вычислять дату этого праздника. В современных версиях PHP рекомендуемым способом определения Пасхального воскресенья является использование класса DateTime. В этой статье объясняется методология расчёта и приводятся пошаговые инструкции как для современных, так и для устаревших реализаций PHP.

История Пасхи

Дата Пасхи основана на лунно-солнечном календаре и вычисляется с использованием астрономических и математических правил. Исторически этот расчёт был формализован Никейским собором в 325 году н. э. для унификации празднования в разных регионах.

Вычисление даты Пасхи

Дата Пасхи определяется как первое воскресенье, следующее за первым полнолунием, которое наступает в день весеннего равноденствия (первый день весны) или после него. Этот метод расчёта был установлен Никейским собором в 325 году н. э.

В PHP этот расчёт можно реализовать с помощью встроенных функций для работы с датами. Ниже приведены рекомендуемый и устаревший подходы:

Рекомендуемый подход (PHP 5.3+) Используйте класс DateTime с модификатором Easter Sunday. Он выполняет сложные лунные расчёты внутри себя и учитывает настройки часового пояса.

  • Сигнатура: new DateTime(string $datetime = "now", ?DateTimeZone $timezone = null)
  • Параметры: Передайте "Easter Sunday YYYY" (например, "Easter Sunday 2023"). При необходимости передайте объект DateTimeZone.
  • Возвращаемое значение: Объект DateTime, представляющий Пасхальное воскресенье в 00:00:00.
  • Часовой пояс: Учитывает указанный часовой пояс или часовой пояс по умолчанию на сервере.

Устаревшая функция: easter_date() (Удалена)

⚠️ Важно: Функция easter_date() была помечена как устаревшая в PHP 8.1 и удалена в PHP 8.2. Она больше не доступна в современных средах PHP. Вместо неё используйте подход с DateTime, описанный выше.

Исторически в PHP была доступна функция easter_date() для вычисления даты Пасхи.

  • Сигнатура: easter_date(int $timestamp = time()): int
  • Параметры: Unix-метка времени, представляющая год, для которого нужно вычислить Пасху.
  • Возвращаемое значение: Unix-метка времени для Пасхального воскресенья этого года.
  • Часовой пояс: Оперирует на основе date_default_timezone_set() и не принимает аргументы пользовательского часового пояса.

Примеры кода

Современный пример (рекомендуется)

php
<?php

$year = 2023;
$easter = new DateTime("Easter Sunday $year");
echo $easter->format('F j, Y'); // Outputs: April 9, 2023

Устаревший пример (только для PHP 8.1 и более ранних версий)

php
<?php

$year = 2023;
$easter_date = easter_date(mktime(0, 0, 0, 1, 1, $year));
echo date('F j, Y', $easter_date);

Этот код выведет дату Пасхального воскресенья в 2023 году: 9 апреля 2023 г.

Заключение

Подводя итог, понимание программных методов вычисления даты Пасхи полезно для календарных приложений и планирования праздников. Для современных версий PHP всегда отдавайте предпочтение классу DateTime с модификатором Easter Sunday для получения надёжных результатов с учётом часового пояса. Устаревшую функцию easter_date() следует использовать только при поддержке унаследованных кодовых баз, работающих на PHP 8.1 или более ранних версиях.

Практика

Что возвращает функция easter_date() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.