PHP 8.4.2 Released!

Класс 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_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_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 WALLTIME_FIRST;
public const int WALLTIME_LAST;
public const int WALLTIME_NEXT_VALID;
/* Методы */
private __construct()
public add(int $field, int $value): bool
public after(IntlCalendar $other): bool
public before(IntlCalendar $other): bool
public clear(?int $field = null): true
public equals(IntlCalendar $other): bool
public fieldDifference(float $timestamp, int $field): int|false
public static fromDateTime(DateTime|string $datetime, ?string $locale = null): ?IntlCalendar
public get(int $field): int|false
public getActualMaximum(int $field): int|false
public getActualMinimum(int $field): int|false
public static getAvailableLocales(): array
public getDayOfWeekType(int $dayOfWeek): int|false
public static getKeywordValuesForLocale(string $keyword, string $locale, bool $onlyCommon): IntlIterator|false
public getLeastMaximum(int $field): int|false
public getLocale(int $type): string|false
public getMaximum(int $field): int|false
public getMinimum(int $field): int|false
public static getNow(): float
public getTime(): float|false
public getType(): string
public getWeekendTransition(int $dayOfWeek): int|false
public isLenient(): bool
public isSet(int $field): bool
public isWeekend(?float $timestamp = null): bool
public roll(int $field, int|bool $value): bool
public set(int $field, int $value): true
public set(
    int $year,
    int $month,
    int $dayOfMonth = NULL,
    int $hour = NULL,
    int $minute = NULL,
    int $second = NULL
): true
public setDate(int $year, int $month, int $dayOfMonth): void
public setDateTime(
    int $year,
    int $month,
    int $dayOfMonth,
    int $hour,
    int $minute,
    ?int $second = null
): void
public setFirstDayOfWeek(int $dayOfWeek): true
public setLenient(bool $lenient): true
public setTime(float $timestamp): bool
}

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

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
Добавить

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

up
1
Doug
1 year ago
Example obtaining a week and its boundaries (for building a calendar view):

<?php
$date
= new DateTime('now');
$locale = 'en_US';

$thisWeek = IntlCalendar::fromDateTime($date, $locale);
$thisWeek->set(IntlCalendar::FIELD_DAY_OF_WEEK, $thisWeek->getFirstDayOfWeek());
// $thisWeek now points to the first day of the week
$weekStart = $thisWeek->toDateTime();

$daysToAdvance = $thisWeek->getMaximum(IntlCalendar::FIELD_DAY_OF_WEEK) - 1;
// Maximum number of days in a week minus 1 gets you to the last day
$weekEnd = $weekStart->modify("+{$daysToAdvance} days");

$previousWeek = IntlCalendar::fromDateTime($date, $locale);
$previousWeek->add(IntlCalendar::FIELD_WEEK_OF_YEAR, -1);
$previousWeek = $previousWeek->toDateTime();

$nextWeek = IntlCalendar::fromDateTime($date, $locale);
$nextWeek->add(IntlCalendar::FIELD_WEEK_OF_YEAR, 1);
$nextWeek = $nextWeek->toDateTime();
?>
To Top