(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
IntlDateFormatter::setCalendar -- datefmt_set_calendar — Устанавливает тип календаря для средства форматирования
Объектно-ориентированный стиль
Процедурный стиль
Метод устанавливает тип календаря с которым будет работать средство форматирования.
formatterРесурс средства форматирования.
calendar
       Параметр принимает константы
       типа календаря
       или объект IntlCalendar.
       Метод использует календарь по умолчанию — IntlDateFormatter::GREGORIAN,
       если указали значение null.
     
Метод клонирует объект IntlCalendar, который получит в аргументе; сам объект аргумента не изменится.
Часовой пояс средства форматирования сохранится, только если объект IntlCalendar не передали, иначе новый часовой пояс будет таким же, как у объекта, который передали.
   Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.
  
Пример #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
