gregoriantojd()
Функция gregoriantojd() в PHP преобразует дату по григорианскому календарю в юлианский счёт дней — целое число, отсчитываемое от фиксированной точки.
Введение
Функция PHP gregoriantojd() преобразует дату по григорианскому календарю в юлианский счёт дней — единственное целое число, представляющее дату путём подсчёта дней, прошедших с фиксированной начальной точки. На этой странице объясняется значение этих терминов, приводится сигнатура функции и возвращаемые значения, рассматривается рабочий пример, а также даются ссылки на обратную и связанные функции для работы с календарями.
gregoriantojd() входит в состав встроенного расширения PHP Calendar. Функция не является устаревшей, однако большинству современных проектов юлианский счёт дней нужен лишь для астрономических расчётов, взаимодействия с научными данными или конвертации между календарными системами. Для повседневной арифметики с датами и их форматирования используйте класс DateTime.
История григорианского календаря
Григорианский календарь был введён для исправления ошибок юлианского календаря. Юлианский календарь основывался на предположении, что год составляет ровно 365,25 дней. Однако это было не вполне точно, и календарь постепенно расходился с солнечным годом. К моменту введения григорианского календаря юлианский отставал на 10 дней.
Григорианский календарь решил эту проблему, введя новую систему расчёта високосных лет. В григорианском календаре год является високосным, если он делится на 4, но не делится на 100, за исключением случаев, когда он также делится на 400. Это означает, что 1700, 1800 и 1900 годы не являются високосными, а 1600 и 2000 — являются.
Синтаксис
gregoriantojd(int $month, int $day, int $year): intФункция принимает три целочисленных аргумента в порядке месяц, день, год — обратите внимание, что месяц стоит первым, а не день:
$month— месяц: от1(январь) до12(декабрь).$day— день месяца: от1до31.$year— год. Допустимый диапазон: от-4714до9999. Год0не является допустимым.
Функция возвращает юлианский счёт дней в виде целого числа или 0, если дата выходит за пределы допустимого диапазона.
Что такое юлианский счёт дней?
Юлианский счёт дней — это способ представления любой календарной даты в виде единственного постоянно возрастающего целого числа. Отсчёт начинается с полудня 1 января 4713 года до н. э. (по пролептическому юлианскому календарю). Поскольку каждая дата становится одним числом, количество дней между двумя датами можно найти простым вычитанием — независимо от месяцев, високосных лет или границ между календарями. Именно поэтому астрономы и научные форматы данных используют его.
Преобразование даты по григорианскому календарю
Чтобы преобразовать 14 февраля 2023 года в юлианский счёт дней, передайте месяц, день и год:
$jd = gregoriantojd(2, 14, 2023);
echo $jd; // 2459990Переменная $jd теперь содержит 2459990 — юлианский счёт дней для этой даты.
Обработка недопустимых дат
Если дата выходит за пределы поддерживаемого диапазона, gregoriantojd() возвращает 0, а не выбрасывает ошибку. Результат 0 следует трактовать как «недопустимый ввод»:
$jd = gregoriantojd(13, 40, 2023); // month 13, day 40 — invalid
if ($jd === 0) {
echo "Invalid date.";
}Обратное преобразование
Чтобы выполнить обратное действие — преобразовать юлианский счёт дней обратно в строку с датой по григорианскому календарю — используйте обратную функцию jdtogregorian():
$jd = gregoriantojd(2, 14, 2023);
echo jdtogregorian($jd); // 2/14/2023Когда это использовать?
Функция gregoriantojd() пригодится, когда нужно:
- Подсчитать количество дней между двумя датами путём вычитания их юлианских счётов дней.
- Конвертировать между календарными системами (например, из григорианского в юлианский или еврейский) с помощью других функций PHP Calendar.
- Найти день недели для даты с помощью
jddayofweek().
Для обычной работы с датами в приложениях — разбора пользовательского ввода, форматирования вывода, добавления интервалов — предпочтительнее использовать класс DateTime, который поддерживает часовые пояса и значительно удобнее.
Заключение
gregoriantojd() преобразует дату по григорианскому календарю в единственное целое число — юлианский счёт дней, что упрощает арифметику с датами и конвертацию между календарями. Помните о порядке аргументов (сначала месяц), проверяйте возврат 0 при недопустимом вводе и используйте jdtogregorian() для обратного преобразования. Для общих задач работы с датами класс DateTime по-прежнему остаётся наилучшим инструментом.