# Класс IntlCalendar

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

## Введение

## Обзор класса

class IntlCalendar {
/* Константы */
public const int FIELD_ERA;
public const int FIELD_YEAR;
public const int FIELD_MONTH;
public const int FIELD_WEEK_OF_YEAR;
public const int FIELD_WEEK_OF_MONTH;
public const int FIELD_DATE;
public const int FIELD_DAY_OF_YEAR;
public const int FIELD_DAY_OF_WEEK;
public const int FIELD_DAY_OF_WEEK_IN_MONTH;
public const int FIELD_AM_PM;
public const int FIELD_HOUR;
public const int FIELD_HOUR_OF_DAY;
public const int FIELD_MINUTE;
public const int FIELD_SECOND;
public const int FIELD_MILLISECOND;
public const int FIELD_ZONE_OFFSET;
public const int FIELD_DST_OFFSET;
public const int FIELD_YEAR_WOY;
public const int FIELD_DOW_LOCAL;
public const int FIELD_EXTENDED_YEAR;
public const int FIELD_JULIAN_DAY;
public const int FIELD_MILLISECONDS_IN_DAY;
public const int FIELD_IS_LEAP_MONTH;
public const int FIELD_FIELD_COUNT;
public const int FIELD_DAY_OF_MONTH;
public const int DOW_SUNDAY;
public const int DOW_MONDAY;
public const int DOW_TUESDAY;
public const int DOW_WEDNESDAY;
public const int DOW_THURSDAY;
public const int DOW_FRIDAY;
public const int DOW_SATURDAY;
public const int DOW_TYPE_WEEKDAY;
public const int DOW_TYPE_WEEKEND;
public const int DOW_TYPE_WEEKEND_OFFSET;
public const int DOW_TYPE_WEEKEND_CEASE;
public const int WALLTIME_FIRST;
public const int WALLTIME_LAST;
public const int WALLTIME_NEXT_VALID;
/* Методы */
private function __construct()
public function add(int `$field`, int `$value`): bool
public function after(IntlCalendar `$other`): bool
public function before(IntlCalendar `$other`): bool
public function clear(?int `$field` = `null`): true
public static function createInstance(IntlTimeZone|DateTimeZone|string|null `$timezone` = `null`, ?string `$locale` = `null`): ?IntlCalendar
public function equals(IntlCalendar `$other`): bool
public function fieldDifference(float `$timestamp`, int `$field`): int|false
public static function fromDateTime(DateTime|string `$datetime`, ?string `$locale` = `null`): ?IntlCalendar
public function get(int `$field`): int|false
public function getActualMaximum(int `$field`): int|false
public function getActualMinimum(int `$field`): int|false
public static function getAvailableLocales(): array
public function getDayOfWeekType(int `$dayOfWeek`): int|false
public function getErrorCode(): int|false
public function getErrorMessage(): string|false
public function getFirstDayOfWeek(): int|false
public function getGreatestMinimum(int `$field`): int|false
public static function getKeywordValuesForLocale(string `$keyword`, string `$locale`, bool `$onlyCommon`): IntlIterator|false
public function getLeastMaximum(int `$field`): int|false
public function getLocale(int `$type`): string|false
public function getMaximum(int `$field`): int|false
public function getMinimalDaysInFirstWeek(): int|false
public function getMinimum(int `$field`): int|false
public static function getNow(): float
public function getRepeatedWallTimeOption(): int
public function getSkippedWallTimeOption(): int
public function getTime(): float|false
public function getTimeZone(): IntlTimeZone|false
public function getType(): string
public function getWeekendTransition(int `$dayOfWeek`): int|false
public function inDaylightTime(): bool
public function isEquivalentTo(IntlCalendar `$other`): bool
public function isLenient(): bool
public function isSet(int `$field`): bool
public function isWeekend(?float `$timestamp` = `null`): bool
public function roll(int `$field`, int|bool `$value`): bool
public function set(int `$field`, int `$value`): true
public function set(
int `$year`,
int `$month`,
int `$dayOfMonth` = NULL,
int `$hour` = NULL,
int `$minute` = NULL,
int `$second` = NULL
): true
public function setDate(int `$year`, int `$month`, int `$dayOfMonth`): void
public function setDateTime(
int `$year`,
int `$month`,
int `$dayOfMonth`,
int `$hour`,
int `$minute`,
?int `$second` = `null`
): void
public function setFirstDayOfWeek(int `$dayOfWeek`): true
public function setLenient(bool `$lenient`): true
public function setMinimalDaysInFirstWeek(int `$days`): true
public function setRepeatedWallTimeOption(int `$option`): true
public function setSkippedWallTimeOption(int `$option`): true
public function setTime(float `$timestamp`): bool
public function setTimeZone(IntlTimeZone|DateTimeZone|string|null `$timezone`): bool
public function toDateTime(): DateTime|false
}

## Предопределённые константы

`IntlCalendar::FIELD_ERA` int

  Поле календаря численно представляет эпоху, например `1` для «от рождества Христова» и `0` для «до рождества Христова» в Григорианском и Юлианском календарях и `235` для периода Хэйсэй (平成) в Японском календаре. Не все календари имеют больше одной эпохи.

`IntlCalendar::FIELD_YEAR` int

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

`IntlCalendar::FIELD_MONTH` int

  Поле календаря для месяца. Последовательность месяцев начинается с нуля, следовательно Janurary (январь) (здесь используется для обозначения первого месяца года, но по фактически иногда бывает совсем другое имя, например Muharram для Исламского календаря) будет представлен числом `0`, February (Февраль) числом `1`, …, December (декабрь) числом `11` и, для отдельных календарей, 13-й или високосный месяц, значение будет равно `12`.

`IntlCalendar::FIELD_WEEK_OF_YEAR` int

  Поле календаря для номера недели в году. Зависит от того, с какого дня начинается неделя и минимального количества дней в неделе.

`IntlCalendar::FIELD_WEEK_OF_MONTH` int

  Поле календаря для номера недели в месяце. Зависит от того, с какого дня начинается неделя и минимального количества дней в неделе.

`IntlCalendar::FIELD_DATE` int

  Поле календаря для номера дня в месяце. То же, что и константа `IntlCalendar::FIELD_DAY_OF_MONTH`.

`IntlCalendar::FIELD_DAY_OF_YEAR` int

  Поле календаря для номера дня в году. Для Грегорианского календаря начинается с `1` и заканчивается на `365` или `366`.

`IntlCalendar::FIELD_DAY_OF_WEEK` int

  Поле календаря для номера дня в неделе. Начинается с `1` (воскресенье, смотрите описание константы `IntlCalendar::DOW_SUNDAY` и связанные константы) и заканчивается 7 (суббота).

`IntlCalendar::FIELD_DAY_OF_WEEK_IN_MONTH` int

  Номер дня недели (воскресенье, понедельник, …) в месяце. Допустим это значение равно `1`, а значение дня недели равно `2` (понедельник), следовательно, это первый понедельник месяца. Максимальное значение равно `5`.

  Также допустимы значения `0` и ниже (отрицательные). Значение `0` охватывает 7 дней непосредственно перед началом месяца (первый подходящий день в месяце имеет значение `1`). Отрицательные значения отсчитываются от конца месяца. Так, значение `-1` указывает на последний подходящий день месяца, `-2` на второй с конца и т. д.

  В отличие от констант `IntlCalendar::FIELD_WEEK_OF_MONTH` и `IntlCalendar::FIELD_WEEK_OF_YEAR`, это значение не зависит от методов IntlCalendar::getFirstDayOfWeek() и IntlCalendar::getMinimalDaysInFirstWeek(). Первая среда — это первая среда, даже если неделя началась в предыдущем месяце.

`IntlCalendar::FIELD_AM_PM` int

  Поле календаря, которое определяет время до или после полудня. Соответственно `0` — до полудня, (`1`) — после. Полночь считается как «до полудня», полдень как «после полудня».

`IntlCalendar::FIELD_HOUR` int

  Поле календаря для часов, без указания до или после полудня. Допускаются значения в интервале от `0` до `11`.

`IntlCalendar::FIELD_HOUR_OF_DAY` int

  Поле календаря для полных (24-часовой формат) часов. Допускаются значения от `0` до `23`.

`IntlCalendar::FIELD_MINUTE` int

  Поле календаря для минут.

`IntlCalendar::FIELD_SECOND` int

  Поле календаря для секунд.

`IntlCalendar::FIELD_MILLISECOND` int

  Поле календаря для миллисекунд.

`IntlCalendar::FIELD_ZONE_OFFSET` int

  Поле календаря для «сырого» смещения часового пояса, в миллисекундах. «Сырое» смещение не учитывает переходы на летнее и зимнее время.

`IntlCalendar::FIELD_DST_OFFSET` int

  Поле календаря для смещения часового пояса в миллисекундах в зависимости от летнего или зимнего времени, если применимо к данному часовому поясу.

`IntlCalendar::FIELD_YEAR_WOY` int

  Поле календаря, которое представляет год для недели года.

`IntlCalendar::FIELD_DOW_LOCAL` int

  Поле календаря для локализованного дня недели. Принимает значения в диапазоне от `1` до `7`. Значение `1` используется для дня недели, который соответствует значению, которое возвращает метод IntlCalendar::getFirstDayOfWeek().

`IntlCalendar::FIELD_EXTENDED_YEAR` int

  Поле календаря для представления номера года в контексте обеспечения непрерывности между эпохами. Например, для Грегорианского календаря это значение для эпохи «после рождества Христова» будет соответствовать константе `IntlCalendar::FIELD_YEAR`, а для эпохи «до рождества Христова» год `y` будет представлен как `-y + 1`.

`IntlCalendar::FIELD_JULIAN_DAY` int

  Поле календаря для модифицированных номеров дней Юлианского календаря. В отличие от стандартного Юлианского календаря, в нём переход происходит в полночь по локальному времени, а не в полдень по времени UTC. Он однозначно идентифицирует дату.

`IntlCalendar::FIELD_MILLISECONDS_IN_DAY` int

  Поле календаря, которое охватывает `IntlCalendar::FIELD_HOUR_OF_DAY`, `IntlCalendar::FIELD_MINUTE`, `IntlCalendar::FIELD_SECOND` и `IntlCalendar::FIELD_MILLISECOND`. Находится в диапазоне от `0` до `24 * 3600 * 1000 - 1`. Это не количество миллисекунд, которое прошло с полуночи, поскольку в моменты перехода на летнее или зимнее время будет иметь разрывы.

`IntlCalendar::FIELD_IS_LEAP_MONTH` int

  Поле календаря, которое принимает значение `1` для високосного месяца и `0` для обычного.

`IntlCalendar::FIELD_FIELD_COUNT` int

  Общее количество полей.

`IntlCalendar::FIELD_DAY_OF_MONTH` int

  Псевдоним константы `IntlCalendar::FIELD_DATE`.

`IntlCalendar::DOW_SUNDAY` int

  Воскресенье.

`IntlCalendar::DOW_MONDAY` int

  Понедельник.

`IntlCalendar::DOW_TUESDAY` int

  Вторник.

`IntlCalendar::DOW_WEDNESDAY` int

  Среда.

`IntlCalendar::DOW_THURSDAY` int

  Четверг.

`IntlCalendar::DOW_FRIDAY` int

  Пятница.

`IntlCalendar::DOW_SATURDAY` int

  Суббота.

`IntlCalendar::DOW_TYPE_WEEKDAY` int

  Вывод метода IntlCalendar::getDayOfWeekType() означает, что день — будний.

`IntlCalendar::DOW_TYPE_WEEKEND` int

  Вывод метода IntlCalendar::getDayOfWeekType() означает, что день — выходной.

`IntlCalendar::DOW_TYPE_WEEKEND_OFFSET` int

  Вывод IntlCalendar::getDayOfWeekType() означает, что выходные начинаются в этот день.

`IntlCalendar::DOW_TYPE_WEEKEND_CEASE` int

  Вывод метода IntlCalendar::getDayOfWeekType() означает, что выходные заканчиваются в этот день.

`IntlCalendar::WALLTIME_FIRST` int

  Вывод метода IntlCalendar::getSkippedWallTimeOption() означает, что время в пропущенном диапазоне должно ссылаться на момент времени меньший на один час, а вывод метода IntlCalendar::getRepeatedWallTimeOption() означает, что время в повторяемом диапазоне должно относиться к моменту первого появления такого времени.

`IntlCalendar::WALLTIME_LAST` int

  Вывод метода IntlCalendar::getSkippedWallTimeOption() означает, что время в пропущенном диапазоне должно ссылаться на момент времени больший на один час, а вывод метода IntlCalendar::getRepeatedWallTimeOption() означает, что время в повторяемом диапазоне должно относиться к моменту второго появления такого времени.

`IntlCalendar::WALLTIME_NEXT_VALID` int

  Вывод метода IntlCalendar::getSkippedWallTimeOption() означает, что время в пропущенном диапазоне относится к моменту, когда случился переход на зимнее или летнее время.

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

Версия | Описание
--- | ---
8.4.0 | Константы класса стали типизированными.

## Содержание

- IntlCalendar::add — Добавляет количество (со знаком) времени в поле
- IntlCalendar::after — Определяет, время этого объекта позже времени переданного объекта
- IntlCalendar::before — Определяет, время этого объекта раньше времени переданного объекта
- IntlCalendar::clear — Очищает поле или все поля
- IntlCalendar::__construct — Закрытый конструктор для запрета создания экземпляров
- IntlCalendar::createInstance — Создаёт новый объект IntlCalendar
- IntlCalendar::equals — Сравнивает время двух объектов IntlCalendar на предмет равенства
- IntlCalendar::fieldDifference — Вычисляет разницу между заданным временем и временем объекта
- IntlCalendar::fromDateTime — Создаёт объект IntlCalendar из объекта DateTime или строки
- IntlCalendar::get — Получает значение поля
- IntlCalendar::getActualMaximum — Максимальное значение для поля с учётом текущего времени объекта
- IntlCalendar::getActualMinimum — Минимальное значение для поля с учётом текущего времени объекта
- IntlCalendar::getAvailableLocales — Получает массив языковых стандартов, для которых есть данные
- IntlCalendar::getDayOfWeekType — Сообщает, является ли день будним, выходным или днём с переходом между ними
- IntlCalendar::getErrorCode — Получает последний код ошибки объекта
- IntlCalendar::getErrorMessage — Получает последнее сообщение об ошибке для объекта
- IntlCalendar::getFirstDayOfWeek — Получает первый день недели для языкового стандарта календаря
- IntlCalendar::getGreatestMinimum — Получает наибольшее локальное минимальное значение поля
- IntlCalendar::getKeywordValuesForLocale — Получает набор значений ключевых слов языкового стандарта
- IntlCalendar::getLeastMaximum — Получает наименьший локальный максимум поля
- IntlCalendar::getLocale — Получает языковой стандарт, связанный с объектом
- IntlCalendar::getMaximum — Получает глобальное максимальное значение поля
- IntlCalendar::getMinimalDaysInFirstWeek — Получает минимальное количество дней, которое может быть в первой неделе в году или месяце
- IntlCalendar::getMinimum — Получает глобальное минимальное значение поля
- IntlCalendar::getNow — Получает число, представляющее текущее время
- IntlCalendar::getRepeatedWallTimeOption — Получает поведение для обработки повторяющегося времени процессора
- IntlCalendar::getSkippedWallTimeOption — Получает поведение для обработки пропущенного времени процессора
- IntlCalendar::getTime — Получает время, представленное в данный момент объектом
- IntlCalendar::getTimeZone — Получает часовой пояс объекта
- IntlCalendar::getType — Получает тип календаря
- IntlCalendar::getWeekendTransition — Получает время дня, когда выходные начинаются или заканчиваются
- IntlCalendar::inDaylightTime — Определяет, переходит ли время объекта на летнее время
- IntlCalendar::isEquivalentTo — Определяет, равен ли другой календарь, но для другого времени
- IntlCalendar::isLenient — Определяет, является ли интерпретация даты/времени мягкой
- IntlCalendar::isSet — Определяет, установлено ли поле
- IntlCalendar::isWeekend — Определяет, приходятся ли определённые дата/время на выходные
- IntlCalendar::roll — Добавляет значение в поле без переноса в более важные поля
- IntlCalendar::set — Устанавливает поле времени или сразу несколько общих полей
- IntlCalendar::setDate — Устанавливает поля даты
- IntlCalendar::setDateTime — Устанавливает поля даты и времени
- IntlCalendar::setFirstDayOfWeek — Устанавливает день, который является началом недели
- IntlCalendar::setLenient — Устанавливает, должна ли интерпретация даты/времени быть мягкой
- IntlCalendar::setMinimalDaysInFirstWeek — Устанавливает минимальное количество дней, которое может быть в первой неделе в году или месяце
- IntlCalendar::setRepeatedWallTimeOption — Устанавливает поведение для обработки повторяющегося времени процессора при отрицательных переходах смещения часового пояса
- IntlCalendar::setSkippedWallTimeOption — Устанавливает поведение для обработки пропущенного времени процессора при положительных переходах смещения часового пояса
- IntlCalendar::setTime — Устанавливает календарное время в миллисекундах с начала эпохи Unix
- IntlCalendar::setTimeZone — Устанавливает часовой пояс, используемый календарём
- IntlCalendar::toDateTime — Преобразовывает объект IntlCalendar в объект DateTime

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open