jdtojulian()
Функция PHP jdtojulian() преобразует номер юлианского дня в дату юлианского календаря. Примеры использования и обратная функция juliantojd().
Функция PHP jdtojulian()
Функция jdtojulian() преобразует номер юлианского дня в дату юлианского календаря, возвращая строку в формате month/day/year.
Важно не путать два значения слова «юлианский»:
- Номер юлианского дня (JDC) — непрерывный счёт дней, начиная с полудня по всемирному времени 1 января 4713 года до н.э. Это просто число (например,
2459459), которое не имеет отношения к какому-либо конкретному календарю. Оно широко используется в астрономии, поскольку упрощает арифметику дат. - Юлианский календарь — календарь, введённый Юлием Цезарем в 45 году до н.э. и применявшийся в Европе вплоть до его постепенной замены григорианским календарём начиная с 1582 года. На сегодняшний день два календаря расходятся на 13 дней.
jdtojulian() принимает номер юлианского дня и возвращает соответствующую дату в юлианском календаре. Её аналог, jdtogregorian(), делает то же самое, но возвращает дату в григорианском календаре.
Синтаксис
jdtojulian(int $julian_day): stringФункция принимает один параметр — номер юлианского дня в виде целого числа — и возвращает соответствующую дату юлианского календаря в виде строки "month/day/year". Если передать 0 (недопустимый номер юлианского дня), функция вернёт "0/0/0".
Преобразование номера юлианского дня в дату юлианского календаря
<?php
$jdc = 2459459;
$julianDate = jdtojulian($jdc);
echo $julianDate; // Outputs: 8/19/2021Возвращаемое значение является строкой, поэтому при необходимости её можно разобрать на отдельные части:
<?php
[$month, $day, $year] = explode('/', jdtojulian(2459459));
echo "Year: $year, Month: $month, Day: $day";
// Outputs: Year: 2021, Month: 8, Day: 19Почему даты юлианского и григорианского календарей различаются
Один и тот же номер юлианского дня соответствует разным датам в разных календарях. Для 2459459:
<?php
echo jdtojulian(2459459); // Outputs: 8/19/2021 (Julian calendar)
echo "\n";
echo jdtogregorian(2459459); // Outputs: 9/1/2021 (Gregorian calendar)Разрыв в 13 дней между 8/19 и 9/1 — это именно текущее расхождение между юлианским и григорианским календарями: обе строки описывают один и тот же момент времени.
Преобразование даты юлианского календаря обратно в номер юлианского дня
Чтобы выполнить обратное преобразование — из даты юлианского календаря в номер юлианского дня — используйте juliantojd(). Функция принимает месяц, день и год и возвращает целое число:
<?php
$jdc = juliantojd(8, 19, 2021);
echo $jdc; // Outputs: 2459459Поскольку эти две функции являются обратными друг другу, полный цикл преобразований возвращает исходную дату:
<?php
echo jdtojulian(juliantojd(8, 19, 2021)); // Outputs: 8/19/2021Когда это может понадобиться?
Юлианский календарь редко нужен для работы с обычными датами в приложениях — для этого предпочтительнее использовать API PHP DateTime и date(), которые работают с григорианским календарём. jdtojulian() полезна, когда вы:
- Работаете с историческими записями, датированными до григорианской реформы 1582 года (или в странах, принявших её значительно позже).
- Обращаетесь к астрономическим или генеалогическим данным, в которых даты хранятся в виде номеров юлианского дня.
- Конвертируете между календарными системами, используя номер юлианского дня как нейтральный посредник — например,
gregoriantojd()→ сохранить целое число →jdtojulian().
Примечание: для работы этих функций должно быть включено расширение
calendar. Оно поставляется в комплекте с PHP и по умолчанию компилируется в большинстве сборок.
Заключение
Функция jdtojulian() преобразует номер юлианского дня в строку с датой юлианского календаря, тогда как juliantojd() выполняет обратное преобразование. Они являются аналогами григорианской пары jdtogregorian() и gregoriantojd(), поэтому один и тот же номер дня даёт разные метки в разных календарях. Подробности см. в официальной документации jdtojulian() и juliantojd().