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

gregoriantojd()

Введение

Григорианский календарь, также известный как западный или христианский календарь, — это солнечный календарь, введенный в 1582 году папой римским Григорием XIII. Он широко используется по всему миру в качестве стандартного гражданского календаря. Календарь был введен как реформа юлианского календаря, который использовался с 45 года до н. э.

Примечание: Функция gregoriantojd() устарела в PHP 8.2 и запланирована к удалению в будущих версиях PHP. Для современной работы с датами используйте класс DateTime или IntlGregorianCalendar. См. раздел Альтернатива для современного PHP ниже.

История григорианского календаря

Григорианский календарь был введен для исправления ошибок юлианского календаря. Юлианский календарь основывался на предположении, что год длится ровно 365,25 дня. Однако это не совсем точно, и календарь постепенно рассинхронизировался с солнечным годом. К моменту введения григорианского календаря юлианский отставал на 10 дней.

Григорианский календарь решил эту проблему, внедрив новую систему расчета високосных годов. В григорианском календаре год является високосным, если он делится на 4, но не делится на 100, если только он не делится на 400. Это означает, что такие годы, как 1700, 1800 и 1900, не являются високосными, а 1600 и 2000 — являются.

Преобразование григорианских дат в числа юлианских дней

Числа юлианских дней — это способ представления дат в виде одного числа, что упрощает выполнение вычислений и сравнений. Число юлианского дня представляет количество дней, прошедших с 1 января 4713 года до н. э. Чтобы преобразовать григорианскую дату в число юлианского дня, можно использовать функцию PHP gregoriantojd().

Функция gregoriantojd() принимает три аргумента: месяц, день и год. Например, чтобы преобразовать 14 февраля 2023 года в число юлианского дня, используйте следующий код:

Функция gregoriantojd() в PHP

php
$jd = gregoriantojd(2, 14, 2023);

Переменная $jd теперь будет содержать число юлианского дня для 14 февраля 2023 года, которое равно 2459989.

Примечание: функция возвращает false, если указанная дата недействительна.

Альтернатива для современного PHP

Для современных проектов на PHP класс DateTime является стандартом для арифметики и форматирования дат. Если вам конкретно нужно число юлианского дня, класс IntlGregorianCalendar предоставляет прямую замену. Обратите внимание, что для этого требуется установленное расширение intl:

php
$cal = IntlGregorianCalendar::createInstance();
$cal->set(2023, 1, 14); // Month is 0-indexed (1 = February)
$jd = $cal->getJulianDayNumber();

Заключение

Понимание григорианского календаря и преобразования дат необходимо для многих технических приложений. Хотя gregoriantojd() предоставляет прямой способ вычисления чисел юлианского дня, она устарела в современном PHP. Используйте класс DateTime для общих операций с датами или IntlGregorianCalendar, когда требуются именно числа юлианского дня.

Практика

Какова цель функции PHP 'gregoriantojd'?

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

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