PHP Conference Nagoya 2025

IntlDateFormatter::setCalendar

datefmt_set_calendar

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::setCalendar -- datefmt_set_calendarУстанавливает тип календаря для средства форматирования

Описание

Объектно-ориентированный стиль

public IntlDateFormatter::setCalendar(IntlCalendar|int|null $calendar): bool

Процедурный стиль

datefmt_set_calendar(IntlDateFormatter $formatter, IntlCalendar|int|null $calendar): bool

Метод устанавливает тип календаря с которым будет работать средство форматирования.

Список параметров

formatter

Ресурс средства форматирования.

calendar

Параметр принимает константы типа календаря или объект IntlCalendar. Метод использует календарь по умолчанию — IntlDateFormatter::GREGORIAN, если указали значение null.

Метод клонирует объект IntlCalendar, который получит в аргументе; сам объект аргумента не изменится.

Часовой пояс средства форматирования сохранится, только если объект IntlCalendar не передали, иначе новый часовой пояс будет таким же, как у объекта, который передали.

Возвращаемые значения

Функция возвращает true в случае успешного выполнения или false, если возникла ошибка.

Список изменений

Версия Описание
PECL-модуль intl 3.0.0 Теперь метод принимает объект IntlCalendar.

Примеры

Пример #1 Пример установки типа календаря функцией datefmt_set_calendar()

<?php

$fmt
= datefmt_create(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);

echo
'Тип календаря средства форматирования: ' . datefmt_get_calendar($fmt);

datefmt_set_calendar($fmt, IntlDateFormatter::TRADITIONAL);
echo
'Теперь тип календаря: ' . datefmt_get_calendar($fmt);

?>

Пример #2 Пример установки типа календаря в объектно-ориентированном стиле

<?php

$fmt
= new IntlDateFormatter(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);

echo
'Тип календаря средства форматирования: ' . $fmt->getCalendar();

$fmt->setCalendar(IntlDateFormatter::TRADITIONAL);
echo
'Теперь тип календаря: ' . $fmt->getCalendar();

?>

Результат выполнения приведённого примера:

Тип календаря средства форматирования: 1
Теперь тип календаря: 0

Пример #3 Пример установки типа календаря через объект IntlCalendar в аргументе

<?php

$time
= strtotime("2013-03-03 00:00:00 UTC");
$formatter = IntlDateFormatter::create("en_US", NULL, NULL, "Europe/Amsterdam");

echo
"До: ", $formatter->format($time), "\n";

/* Обратите внимание: метод не учитывает языковой стандарт календаря! */
$formatter->setCalendar(
IntlCalendar::createInstance(
"America/New_York",
"pt_PT@calendar=islamic"
)
);

echo
"После: ", $formatter->format($time), "\n";

?>

Результат выполнения приведённого примера:

До: Sunday, March 3, 2013 at 1:00:00 AM Central European Standard Time
После: Saturday, Rabiʻ II 20, 1434 at 7:00:00 PM Eastern Standard Time

Смотрите также

  • datefmt_get_calendar() - Получает тип календаря для объекта IntlDateFormatter
  • datefmt_get_calendar_object() - Получает копию объекта календаря средства форматирования
  • datefmt_create() - Создаёт средство форматирования даты

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top