jdtogregorian()
Функция jdtogregorian() в PHP: преобразование юлианского номера дня в дату григорианского календаря с примерами кода.
Введение
В этой статье мы рассмотрим функцию jdtogregorian() в PHP и её применение для преобразования юлианских дат в григорианские. Мы также изучим историю и значение юлианского и григорианского календарей, а также разницу между ними.
Юлианский и григорианский календари
Юлианский календарь был введён Юлием Цезарем в 45 году до н. э. и основывался на концепции солнечного года — времени, за которое Земля совершает один оборот вокруг Солнца. Однако юлианский календарь имел небольшой недостаток: он отставал от солнечного года приблизительно на 11 минут в год. Это кажется незначительным, но со временем привело к заметному смещению календарных дат.
Для устранения этой проблемы Папа Григорий XIII в 1582 году н. э. ввёл григорианский календарь. Григорианский календарь стал усовершенствованием юлианского и был призван согласовать календарные даты с солнечным годом. Разница между двумя календарями состоит в том, что в юлианском году было 365,25 дня, тогда как в григорианском — 365,2425 дня. Эта поправка привела к отмене високосных лет в годах, оканчивающихся на «00», если они не делятся на 400.
Юлианские даты
Юлианские даты — это система счёта дней, начиная с 1 января 4713 года до н. э., которая считается началом юлианского периода. Юлианские даты широко используются в астрономии и основаны на количестве дней, прошедших с начала юлианского периода.
Преобразование юлианских дат в григорианские
Функция jdtogregorian() в PHP преобразует юлианский номер дня в дату григорианского календаря. Она входит в состав расширения calendar, которое по умолчанию включено в большинстве сборок PHP.
Синтаксис
jdtogregorian(int $julian_day): string$julian_day — юлианский номер дня для преобразования. Функция возвращает соответствующую дату григорианского календаря в виде строки в формате месяц/день/год — например 10/4/2021. Обратите внимание, что компоненты не дополняются нулями (возвращается 10/4/2021, а не 10/04/2021), а при передаче юлианского номера 0 возвращается строка-маркер 0/0/0.
Юлианский номер дня — это целое число, отсчитывающее дни с 1 января 4713 года до н. э. Не путайте его с датой юлианского календаря — это разные понятия. Чтобы получить юлианский номер дня из даты григорианского календаря, используйте
gregoriantojd()илиcal_to_jd().
Базовый пример
Преобразуем юлианский номер дня 2459492 в дату григорианского календаря:
<?php
echo jdtogregorian(2459492);Вывод:
10/4/2021Преобразование вывода в формат ISO 8601
Поскольку возвращаемая строка использует формат месяц/день/год без нулевых префиксов, для разбора применяйте спецификаторы n/j/Y (n — месяц без ведущих нулей, j — день без ведущих нулей), если вам нужен стандартный формат YYYY-MM-DD:
<?php
$gregorian = jdtogregorian(2459492); // "10/4/2021"
$date = date_create_from_format('n/j/Y', $gregorian);
echo $date->format('Y-m-d');Вывод:
2021-10-04Подробнее о разборе дат из произвольных форматов см. date_create_from_format().
Обратное преобразование
jdtogregorian() является обратной функцией к gregoriantojd(). Преобразование даты в юлианский номер дня и обратно возвращает исходное значение:
<?php
$jd = gregoriantojd(10, 4, 2021); // month, day, year
echo $jd, "\n"; // 2459492
echo jdtogregorian($jd); // 10/4/2021Вывод:
2459492
10/4/2021Связанные функции работы с календарём
При работе с юлианскими номерами дней вам могут пригодиться следующие функции:
gregoriantojd()— преобразует дату григорианского календаря в юлианский номер дня (обратная к данной функция).jdtojulian()— преобразует юлианский номер дня в дату юлианского календаря.cal_to_jd()иcal_from_jd()— универсальные преобразования с учётом типа календаря.jddayofweek()— возвращает день недели для заданного юлианского номера дня.
Заключение
Функция jdtogregorian() в PHP является полезным инструментом для преобразования юлианских дат в григорианские. Понимание различий между двумя календарями и значимости их введения помогает глубже осознать развитие систем летоисчисления. Надеемся, что эта статья дала вам исчерпывающее представление о данной теме и помогла найти нужную информацию.