Jdtojulian: примеры (PHP)

Использование функции jdtojulian для работы с датами
Раздел: Дата и время
jdtojulian(int $julian_day): string
Описание функции jdtojulian

Функция jdtojulian() в PHP используется для преобразования юлианской даты (JD - Julian Day Count) в строку, представляющую дату в юлианском календаре. Эта функция применяется в специализированных расчетах, например, в исторических исследованиях, астрономии или для работы с древними календарными системами.

Аргументы функции

Функция принимает один обязательный аргумент:

  • $julianday - целое число (int), представляющее юлианский день (Julian Day Count). Диапазон поддерживаемых значений зависит от реализации PHP, но обычно включает даты до 9999 года.

Функция возвращает строку с датой в формате 'месяц/день/год' по юлианскому календарю.

Примеры использования jdtojulian
Преобразование конкретных дат

Преобразование юлианского дня 2451545 в юлианскую дату:

echo jdtojulian(2451545);
1/1/2000
Использование с juliantojd

Обратное преобразование даты в юлианский день:

$jd = juliantojd(10, 4, 1582);
echo jdtojulian($jd);
10/4/1582
Альтернативные функции в PHP
Функции работы с календарями
  • juliantojd() - обратное преобразование, переводит дату юлианского календаря в юлианский день.
  • gregoriantojd() и jdtogregorian() - аналогичные функции для григорианского календаря.
  • cal_from_jd() - универсальная функция для преобразования юлианского дня в дату различных календарей (юлианский, еврейский, французский и др.).

Функцию jdtojulian() предпочтительно использовать для совместимости со старым кодом или для простых преобразований. Для работы с разными календарными системами удобнее применять cal_from_jd().

Аналоги в других языках

Jdtojulian в Python

Библиотека jdc или астрономические пакеты, например, julian:

from julian import from_jd
print(from_jd(2451545, fmt='jd'))
(2000, 1, 1, 12, 0, 0)

Jdtojulian в Javascript

Специализированные библиотеки, например, julian:

const { JD } = require('julian');
console.log(JD.toDate(2451545));
2000-01-01T12:00:00.000Z

Jdtojulian в MySQL

Функция FROM_DAYS() для григорианского календаря (для юлианского требуется дополнительная логика):

SELECT FROM_DAYS(2451545);
6737-11-25

Отличия от PHP: большинство языков не имеют встроенной поддержки юлианского календаря и требуют сторонних библиотек.

Типичные ошибки
Передача нецелого числа

Функция ожидает целое число, иначе результат может быть некорректным:

echo jdtojulian(2451545.7);
1/1/2000

Дробная часть игнорируется, что может привести к неточности.

Выход за границы диапазона

При очень больших или малых значениях возможны искажения:

echo jdtojulian(-1000000);
6/19/-2144

Результат может быть исторически некорректным из-за ограничений календарной системы.

Изменения в PHP 8

В PHP 8 функция jdtojulian() не претерпела значительных изменений. Однако в PHP 8.0 были усилены типизация и обработка ошибок. Например, при передаче нечислового аргумента будет вызвана ошибка типа TypeError.

echo jdtojulian('abc');
TypeError: jdtojulian(): Argument #1 ($julianday) must be of type int, string given
Расширенные примеры
Сравнение юлианского и григорианского календарей

Разница в датах для исторического события:

Пример php
$jd = gregoriantojd(10, 15, 1582);
echo 'Григорианская: ' . jdtogregorian($jd) . '\n';
echo 'Юлианская: ' . jdtojulian($jd);
Григорианская: 10/15/1582
Юлианская: 10/5/1582
Работа с астрономическими данными

Расчет даты по юлианскому дню с высокой точностью:

Пример php
$jd = 2451545.5; // Полдень 1 января 2000 года
$date = jdtojulian((int)$jd);
echo 'Дата: ' . $date . '\n';
echo 'Уточнение: для дробных JD требуется отдельная обработка времени.';
Дата: 1/1/2000
Уточнение: для дробных JD требуется отдельная обработка времени.
Исторические вычисления

Определение дня недели для юлианской даты:

Пример php
$jd = juliantojd(3, 15, 44); // 15 марта 44 года до н.э.
$julianDate = jdtojulian($jd);
$dayOfWeek = jddayofweek($jd, 1);
echo "Дата: $julianDate, день недели: $dayOfWeek";
Дата: 3/15/-44, день недели: Thursday

PHP jdtojulian function comments

En
Jdtojulian Converts a Julian Day Count to a Julian Calendar Date