W3docs

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 является полезным инструментом для преобразования юлианских дат в григорианские. Понимание различий между двумя календарями и значимости их введения помогает глубже осознать развитие систем летоисчисления. Надеемся, что эта статья дала вам исчерпывающее представление о данной теме и помогла найти нужную информацию.

Практика

Практика
Что делает функция jdtoGregorian() в PHP?
Что делает функция jdtoGregorian() в PHP?
Was this page helpful?