Jdtojulian: примеры (PHP)
jdtojulian(int $julian_day): stringФункция jdtojulian() в PHP используется для преобразования юлианской даты (JD - Julian Day Count) в строку, представляющую дату в юлианском календаре. Эта функция применяется в специализированных расчетах, например, в исторических исследованиях, астрономии или для работы с древними календарными системами.
Функция принимает один обязательный аргумент:
- $julianday - целое число (int), представляющее юлианский день (Julian Day Count). Диапазон поддерживаемых значений зависит от реализации PHP, но обычно включает даты до 9999 года.
Функция возвращает строку с датой в формате 'месяц/день/год' по юлианскому календарю.
Преобразование юлианского дня 2451545 в юлианскую дату:
echo jdtojulian(2451545);1/1/2000
Обратное преобразование даты в юлианский день:
$jd = juliantojd(10, 4, 1582);
echo jdtojulian($jd);10/4/1582
- 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 функция jdtojulian() не претерпела значительных изменений. Однако в PHP 8.0 были усилены типизация и обработка ошибок. Например, при передаче нечислового аргумента будет вызвана ошибка типа TypeError.
echo jdtojulian('abc');TypeError: jdtojulian(): Argument #1 ($julianday) must be of type int, string given
Разница в датах для исторического события:
$jd = gregoriantojd(10, 15, 1582);
echo 'Григорианская: ' . jdtogregorian($jd) . '\n';
echo 'Юлианская: ' . jdtojulian($jd);Григорианская: 10/15/1582 Юлианская: 10/5/1582
Расчет даты по юлианскому дню с высокой точностью:
$jd = 2451545.5; // Полдень 1 января 2000 года
$date = jdtojulian((int)$jd);
echo 'Дата: ' . $date . '\n';
echo 'Уточнение: для дробных JD требуется отдельная обработка времени.';Дата: 1/1/2000 Уточнение: для дробных JD требуется отдельная обработка времени.
Определение дня недели для юлианской даты:
$jd = juliantojd(3, 15, 44); // 15 марта 44 года до н.э.
$julianDate = jdtojulian($jd);
$dayOfWeek = jddayofweek($jd, 1);
echo "Дата: $julianDate, день недели: $dayOfWeek";Дата: 3/15/-44, день недели: Thursday