jdmonthname()
Как использовать cal_jdmonthname() в PHP: синтаксис, константы CAL_MONTH_*, примеры и подводные камни.
PHP-функция cal_jdmonthname()
Функция PHP cal_jdmonthname() возвращает название месяца для заданного юлианского номера дня в указанной календарной системе. На этой странице описано, что такое юлианский номер дня, синтаксис функции и её константы режима, приведены примеры с запуском кода, а также указано, что возвращает функция и на какие подводные камни следует обратить внимание.
Внимание: URL этой главы исторически называется
jdmonthname, однако современная PHP-функция —cal_jdmonthname(). Старый псевдонимjdmonthname()из семействаjdбыл удалён в PHP 8.0 — используйте вместо негоcal_jdmonthname().
Синтаксис
cal_jdmonthname(int $julian_day, int $mode): string$julian_day— юлианский номер дня (целое число), как правило, полученный с помощьюcal_to_jd()из обычной даты.$mode— из какой календарной системы читать название месяца. Допустимые значения:
| Режим | Календарь | Формат названия месяца |
|---|---|---|
CAL_MONTH_GREGORIAN_LONG | Gregorian | Полное название (January) |
CAL_MONTH_GREGORIAN_SHORT | Gregorian | Сокращённое (Jan) |
CAL_MONTH_JULIAN_LONG | Julian | Полное название |
CAL_MONTH_JULIAN_SHORT | Julian | Сокращённое |
CAL_MONTH_JEWISH | Jewish | Полное название |
CAL_MONTH_FRENCH | French Republican | Полное название |
Функция возвращает название месяца в виде string. Функция работает на основе расширения calendar, которое должно быть включено в вашей сборке PHP.
Что такое юлианский номер дня?
Прежде чем разобраться, как работает функция cal_jdmonthname(), важно понять, что такое юлианский номер дня. Юлианский номер дня — это непрерывный счёт дней, начавшийся в полдень 1 января 4713 года до н.э. Он был введён Жозефом Скалигером в 1583 году для упрощения астрономических вычислений и сравнения дат.
Что делает функция cal_jdmonthname?
Функция cal_jdmonthname() принимает два параметра: юлианский номер дня и константу режима (одно из значений CAL_MONTH_* из таблицы выше), которая выбирает календарь и определяет, нужно ли полное или сокращённое название. Функция возвращает соответствующее название месяца в виде string.
Частая точка путаницы: первый шаг (cal_to_jd()) использует константы календаря, например CAL_GREGORIAN, тогда как режим, передаваемый в cal_jdmonthname(), должен быть константой CAL_MONTH_*. Они не взаимозаменяемы.
Пример:
Пример использования функции cal_jdmonthname() в PHP
<?php
// Convert today's date to a Julian day count.
$jd = cal_to_jd(CAL_GREGORIAN, (int) date("m"), (int) date("d"), (int) date("Y"));
// Read the long Gregorian month name back from that Julian day.
echo "Today is " . cal_jdmonthname($jd, CAL_MONTH_GREGORIAN_LONG) . ".";
?>В месяце, например, марте это выведет: Today is March.
Как использовать функцию cal_jdmonthname?
Чтобы использовать функцию cal_jdmonthname() в своём PHP-коде, выполните следующие шаги:
- Определите юлианский номер дня для нужной даты. Для преобразования григорианской даты в юлианский номер дня можно использовать функцию
cal_to_jd(). - Вызовите функцию
cal_jdmonthname(), передав юлианский номер дня и константу режима (например,CAL_MONTH_GREGORIAN_LONGилиCAL_MONTH_JULIAN_LONG). - Используйте возвращённое значение в своём коде по мере необходимости.
Примечание: Старые функции расширения jd были удалены в PHP 8.0. Для операций с календарями в современном PHP всегда используйте функции cal_*.
Пример
Вот как можно получить и полное, и сокращённое название месяца для одной и той же даты, изменив только константу режима:
Как использовать функцию cal_jdmonthname() в PHP?
<?php
$jd = cal_to_jd(CAL_GREGORIAN, 3, 1, 2023); // March 1, 2023
echo "Long: " . cal_jdmonthname($jd, CAL_MONTH_GREGORIAN_LONG) . "\n"; // Long: March
echo "Short: " . cal_jdmonthname($jd, CAL_MONTH_GREGORIAN_SHORT) . "\n"; // Short: Mar
?>Поскольку изменилась только константа режима, это наиболее чистый способ переключаться между полными названиями (March) и сокращениями (Mar) или между календарными системами без повторного вычисления даты.
Примечание о юлианском календаре: Передача режима
CAL_MONTH_JULIAN_*читает тот же юлианский номер дня через старый юлианский календарь. Поскольку юлианский календарь в настоящее время отстаёт от григорианского примерно на 13 дней, дата вблизи начала или конца месяца может оказаться в другом названии месяца по сравнению с григорианским чтением.
Преимущества использования функции cal_jdmonthname
Использование функции cal_jdmonthname() значительно упрощает и ускоряет работу с юлианскими номерами дней в PHP. Вот несколько преимуществ этой функции:
- Экономия времени: вместо того чтобы вручную вычислять название месяца для заданного юлианского номера дня, можно просто вызвать функцию
cal_jdmonthname(). - Согласованность: функция гарантирует правильное название месяца каждый раз, что снижает риск ошибок в коде.
- Гибкость: функция позволяет указать календарную систему, что даёт больший контроль над отображением информации в различных исторических или региональных календарях.
Подводные камни
- Используйте константу
CAL_MONTH_*, а неCAL_*. ПередачаCAL_GREGORIAN(значение0) случайно совпадает сCAL_MONTH_GREGORIAN_LONG, однакоCAL_JULIANне даст вам названий месяцев юлианского календаря — используйте вместо негоCAL_MONTH_JULIAN_LONG. - Расширение
calendarдолжно быть включено. Во многих стандартных сборках оно отключено. Если вы получаете ошибкуCall to undefined function cal_jdmonthname(), включитеext-calendarв конфигурации PHP. - Старые псевдонимы
jd*удалены.jdmonthname()и аналогичные функции были удалены в PHP 8.0; в современном коде всегда используйте функцииcal_*.
Связанные функции
cal_to_jd()— преобразование даты календаря в юлианский номер дня (входные данные для этой функции).cal_from_jd()— преобразование юлианского номера дня обратно в части даты, включая номер и название месяца.cal_days_in_month()— количество дней в заданном месяце.cal_info()— названия месяцев и дней для всего календаря сразу.
Заключение
Функция cal_jdmonthname() — удобный инструмент для PHP-разработчиков, работающих с юлианскими номерами дней: она превращает числовой номер дня в человекочитаемое название месяца в выбранной календарной системе. Используйте её в паре с cal_to_jd() для преобразования даты, не забывайте передавать константу CAL_MONTH_* и убедитесь, что расширение calendar включено.