Перейти к содержимому

jddayofweek()

Понимание юлианского календаря

Прежде чем переходить к функции jddayofweek, важно понять юлианский календарь, который был введён Юлием Цезарем в 45 году до н. э. Этот календарь широко использовался по всей Европе до принятия григорианского календаря в 1582 году.

Юлианский календарь основан на году из 365 дней, с високосным годом каждые четыре года для учета дополнительного четверти дня в солнечном году. Однако этот подход приводит к ошибке примерно в три дня каждые 400 лет, что и стало причиной перехода на григорианский календарь.

Что такое функция jddayofweek?

Функция jddayofweek — это встроенная функция PHP, которая определяет день недели на основе заданного номера юлианского дня. Она принимает два параметра: julianday и mode.

Параметр julianday — это целое число, представляющее количество дней, прошедших с 1 января 4713 года до н. э. (юлианская эпоха). Этот непрерывный подсчет дней служит отправной точкой для календарных вычислений.

Параметр mode — это необязательное целое число, определяющее формат возвращаемого значения. По умолчанию используется режим 3 (CAL_DOW_EXTENDED), который возвращает день недели в виде целого числа от 1 до 7, где 1 соответствует понедельнику, а 7 — воскресенью. Другие режимы возвращают сокращенные (1) или полные (2) названия дней.

Как использовать функцию jddayofweek в PHP

Чтобы использовать функцию jddayofweek, сначала преобразуйте целевую дату в номер юлианского дня с помощью cal_to_jd. Эта функция требует указание типа календаря и отдельные целочисленные значения для месяца, дня и года.

Получив номер юлианского дня, передайте его в jddayofweek вместе с нужным режимом. Функция вернет соответствующий день недели.

Ниже приведен пример, демонстрирующий режим по умолчанию (3) и режим 2:

Функция jddayofweek() в PHP

php
<?php
// Convert Gregorian date to Julian day number
$julianDay = cal_to_jd(CAL_GREGORIAN, 3, 2, 2023);

// Mode 3 (default): Returns integer 1-7 (Monday=1, Sunday=7)
$dayInt = jddayofweek($julianDay, 3);
echo "Mode 3: Day number is {$dayInt}\n";

// Mode 2: Returns full day name
$dayName = jddayofweek($julianDay, 2);
echo "Mode 2: {$dayName}\n";
?>

В этом примере мы преобразуем григорианскую дату 2023-03-02 в номер юлианского дня с помощью cal_to_jd. Затем мы передаем его в jddayofweek с режимом 3, который возвращает 5 (что соответствует четвергу). Использование режима 2 возвращает полное название "Четверг".

Заключение

Подводя итог, функция jddayofweek — это полезный инструмент для работы с номерами юлианских дней в PHP. Понимая принцип работы этой функции и то, как использовать её в своем коде, вы сможете точно определять дни недели для исторических, астрономических или кросс-календарных преобразований дат.

Практика

Что делает функция jddayofweek() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.