PHP Conference Nagoya 2025

IntlCalendar::set

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

IntlCalendar::setУстанавливает поле времени или сразу несколько общих полей

Описание

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

public IntlCalendar::set(int $field, int $value): true
public IntlCalendar::set(
    int $year,
    int $month,
    int $dayOfMonth = NULL,
    int $hour = NULL,
    int $minute = NULL,
    int $second = NULL
): true

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

intlcal_set(IntlCalendar $cal, int $field, int $value): true
intlcal_set(
    IntlCalendar $cal,
    int $year,
    int $month,
    int $dayOfMonth = NULL,
    int $hour = NULL,
    int $minute = NULL,
    int $second = NULL
): bool

Устанавливает либо конкретное поле на заданное значение, либо устанавливает сразу несколько общих полей. Диапазон допустимых значений зависит от того, использует ли календарь мягкий режим.

Для полей, которые конфликтуют, поля, которые устанавливаются позже, имеют приоритет.

Этот метод нельзя вызвать ровно с четырьмя аргументами.

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

cal

Экземпляр класса IntlCalendar.

field

Одна из представленных в классе IntlCalendar констант полей типа дата/время. Целое число от 0 до IntlCalendar::FIELD_COUNT.

value

Новое значение указанного поля.

year

Новое значение для IntlCalendar::FIELD_YEAR.

month

Новое значение для IntlCalendar::FIELD_MONTH. Последовательность месяцев отсчитывается от нуля, т.е. январь представлен 0, февраль - 1, ..., декабрь - 11, а Тринадцатый месяц (если в календаре) - 12.

dayOfMonth

Новое значение для IntlCalendar::FIELD_DAY_OF_MONTH.

hour

Новое значение для IntlCalendar::FIELD_HOUR_OF_DAY.

minute

Новое значение для IntlCalendar::FIELD_MINUTE.

second

Новое значение для IntlCalendar::FIELD_SECOND.

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

Функция возвращает логическое значение true.

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

Версия Описание
8.2.0 Значение возврата теперь принадлежит типу true; раньше значение принадлежало типу bool.

Примеры

Пример #1 Пример использования IntlCalendar::set()

<?php
ini_set
('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'pt_PT');

// Вызовы, сделанные позже, приоритетнее
$cal = new IntlGregorianCalendar(2013, 6 /* Июль */, 1);
$cal->set(IntlCalendar::FIELD_YEAR, 2012);
$cal->set(IntlCalendar::FIELD_EXTENDED_YEAR, 2011);
var_dump(IntlDateFormatter::formatObject($cal));

$cal = new IntlGregorianCalendar(2013, 6 /* Июль */, 1);
$cal->set(IntlCalendar::FIELD_YEAR, 2012);
$cal->set(IntlCalendar::FIELD_EXTENDED_YEAR, 2011);
// Время еще не пересчитано. Если мы очистим EXTENDED_YEAR,
// будет использован предыдущий год.
$cal->clear(IntlCalendar::FIELD_EXTENDED_YEAR);
var_dump(IntlDateFormatter::formatObject($cal));

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

string(20) "01/07/2011, 00:00:00"
string(20) "01/07/2012, 00:00:00"

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

  • IntlCalendar::get() - Получает значение поля
  • IntlCalendar::add() - Добавляет количество (со знаком) времени в поле
  • IntlCalendar::roll() - Добавляет значение в поле без переноса в более важные поля

Добавить

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

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