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

Преобразование календарных систем через jdtogregorian в PHP
Раздел: Дата и время
jdtogregorian(int $julian_day): string
Функция jdtogregorian в PHP

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

Когда используется функция

Использование функции актуально при необходимости отображения даты, представленной в виде целого числа юлианских дней. Такой формат часто встречается в астрономических алгоритмах, базах данных, специализированных расчётах и при работе с историческими датами до введения григорианского календаря.

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

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

  • $julianday (int) — целое число, представляющее количество дней по юлианскому календарю (Julian Day Count).

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

Примеры использования jdtogregorian
Базовый пример преобразования
echo jdtogregorian(2459580);
1/13/2022
Преобразование исторической даты
echo jdtogregorian(2299160);
10/4/1582
Работа с нулевым значением
echo jdtogregorian(0);
11/24/-4714
Похожие функции в PHP
cal_from_jd

Функция cal_from_jd() возвращает массив с подробной информацией о дате для различных календарей, включая григорианский. Она более универсальна, так как поддерживает разные календарные системы.

Функция gregoriantojd() выполняет обратное преобразование — из григорианской даты в юлианский день. Эти две функции часто используются вместе.

JDToUnix и unixtojd

Функции для преобразования между юлианскими днями и временем Unix. Полезны при интеграции с системами, использующими Unix-время.

Типичные ошибки
Передача нечислового аргумента
echo jdtogregorian('текст');
Warning: jdtogregorian() expects parameter 1 to be int, string given
Использование отрицательных значений
echo jdtogregorian(-1000000);
11/22/-4716

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

Неправильная интерпретация формата
$date = jdtogregorian(2459580);
list($month, $day, $year) = explode('/', $date);
echo "День: $day, Месяц: $month, Год: $year";
День: 13, Месяц: 1, Год: 2022
Изменения в версиях PHP

В PHP 8.0.0 функция jdtogregorian() стала строго типизированной. При передаче аргументов нецелочисленного типа теперь выбрасывается исключение TypeError. Ранее нецелочисленные значения преобразовывались в целые числа.

// PHP 7
var_dump(jdtogregorian('2459580.5'));
// PHP 8
try {
    var_dump(jdtogregorian('2459580.5'));
} catch (TypeError $e) {
    echo $e->getMessage();
}
PHP 7: string(9) "1/13/2022"
PHP 8: jdtogregorian(): Argument #1 ($julianday) must be of type int, string given
Расширенные примеры
Форматирование вывода даты
Пример php
$jd = 2459580;
$gregorian = jdtogregorian($jd);
list($month, $day, $year) = explode('/', $gregorian);
printf("Дата: %04d-%02d-%02d", $year, $month, $day);
Дата: 2022-01-13
Проверка корректности преобразования
Пример php
function validateJulianDay($jd) {
    $gregorian = jdtogregorian($jd);
    if ($gregorian === '0/0/0') {
        return false;
    }
    return $gregorian;
}
echo validateJulianDay(2459580) ?: 'Неверный юлианский день';
1/13/2022
Вычисление разницы между датами
Пример php
$jd1 = gregoriantojd(1, 1, 2020);
$jd2 = gregoriantojd(1, 1, 2022);
$date1 = jdtogregorian($jd1);
$date2 = jdtogregorian($jd2);
echo "Период с $date1 по $date2";
Период с 1/1/2020 по 1/1/2022
Обработка массива юлианских дней
Пример php
$julianDays = [2459580, 2459581, 2459582];
$gregorianDates = array_map('jdtogregorian', $julianDays);
print_r($gregorianDates);
Array
(
    [0] => 1/13/2022
    [1] => 1/14/2022
    [2] => 1/15/2022
)
Альтернативы в других языках
Python: модуль datetime
from datetime import datetime, timedelta
jd = 2459580
gregorian_date = datetime(1, 1, 1) + timedelta(days=jd - 1721425.5)
print(gregorian_date.strftime('%m/%d/%Y'))
01/13/2022
JavaScript: библиотека 'julian'
// Установка: npm install julian
const julian = require('julian');
let date = julian.toDate(2459580);
console.log(date.toLocaleDateString('en-US'));
1/13/2022
MySQL: функция FROM_DAYS
SELECT DATE_FORMAT(FROM_DAYS(2459580 + 1721425), '%m/%d/%Y');
01/13/2022

PHP jdtogregorian function comments

En
Jdtogregorian Converts Julian Day Count to Gregorian date