Очищает поле или все поля

# IntlCalendar::clear

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

IntlCalendar::clear — Очищает поле или все поля

### Описание

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

public function IntlCalendar::clear(?int `$field` = `null`): true

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

function intlcal_clear(IntlCalendar `$calendar`, ?int `$field` = `null`): true

Очищает либо все поля, либо определённое поле. Очищенное поле помечается как не заданное, что даёт ему самый низкий приоритет по отношению к переопределяющим полям или даже значениям по умолчанию при вычислении времени. Кроме того, его значение установлено на `0`, хотя, учитывая низкий приоритет поля, его значение могло быть внутренне установлено на другое значение к моменту завершения запроса поля.

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

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

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

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

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

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

Версия | Описание
--- | ---
8.2.0 | Вместо общего логического типа bool теперь возвращается конкретный тип `true`.

### Примеры

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

    <?php
    ini_set('intl.default_locale', 'es_ES');
    ini_set('date.timezone', 'UTC');

    $fields = array(
        'FIELD_ERA'                  => 0,
        'FIELD_YEAR'                 => 1,
        'FIELD_MONTH'                => 2,
        'FIELD_WEEK_OF_YEAR'         => 3,
        'FIELD_WEEK_OF_MONTH'        => 4,
        'FIELD_DATE'                 => 5,
        'FIELD_DAY_OF_YEAR'          => 6,
        'FIELD_DAY_OF_WEEK'          => 7,
        'FIELD_DAY_OF_WEEK_IN_MONTH' => 8,
        'FIELD_AM_PM'                => 9,
        'FIELD_HOUR'                 => 10,
        'FIELD_HOUR_OF_DAY'          => 11,
        'FIELD_MINUTE'               => 12,
        'FIELD_SECOND'               => 13,
        'FIELD_MILLISECOND'          => 14,
        'FIELD_ZONE_OFFSET'          => 15,
        'FIELD_DST_OFFSET'           => 16,
        'FIELD_YEAR_WOY'             => 17,
        'FIELD_DOW_LOCAL'            => 18,
        'FIELD_EXTENDED_YEAR'        => 19,
        'FIELD_JULIAN_DAY'           => 20,
        'FIELD_MILLISECONDS_IN_DAY'  => 21,
        'FIELD_IS_LEAP_MONTH'        => 22,
        'FIELD_FIELD_COUNT'          => 23,
    );
    function getSetFields(IntlCalendar $cal) {
        global $fields;
        $ret = array();
        foreach ($fields as $name => $value) {
            if ($cal->isSet($value)) {
                $ret[] = $name;
            }
        }
        return $ret;
    }

    $cal = new IntlGregorianCalendar(2013, 2 /* Март */, 15);
    echo "После создания григорианского календаря\n";
    print_r(getSetFields($cal));
    echo "\n";

    echo IntlDateFormatter::formatObject($cal), "\n";
    echo "После того, как средство форматирования запросило поле EXTENDED_YEAR\n";
    print_r(getSetFields($cal));
    echo "\n";

    $cal->clear(IntlCalendar::FIELD_YEAR);
    echo "После того, как год будет очищен, дата останется прежней\n";
    echo IntlDateFormatter::formatObject($cal), "\n";
    echo "Потому что FIELD_EXTENDED_YEAR все ещё установлен\n";
    print_r(getSetFields($cal));
    echo "\n";

    var_dump($cal->clear(IntlCalendar::FIELD_EXTENDED_YEAR));
    echo "После того, как поле EXTENDED_YEAR было очищено\n";
    print_r(getSetFields($cal));
    echo IntlDateFormatter::formatObject($cal), "\n";
    echo "\n";

    echo "После пересчёта полей,\n"
            . " снова установлено поле EXTENDED_YEAR (до 1970 г.)\n";
    print_r(getSetFields($cal));
    echo "\n";

    $cal->clear();
    echo "После вызова варианта без аргументов\n";
    print_r(getSetFields($cal));
    echo IntlDateFormatter::formatObject($cal), "\n";

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

    После создания григорианского календаря
    Array
    (
        [0] => FIELD_ERA
        [1] => FIELD_YEAR
        [2] => FIELD_MONTH
        [3] => FIELD_DATE
    )

    15/03/2013 00:00:00
    После того, как средство форматирования запросило поле EXTENDED_YEAR
    Array
    (
        [0] => FIELD_ERA
        [1] => FIELD_YEAR
        [2] => FIELD_MONTH
        [3] => FIELD_DATE
        [4] => FIELD_EXTENDED_YEAR
    )

    После того, как год будет очищен, дата останется прежней
    15/03/2013 00:00:00
    Потому что FIELD_EXTENDED_YEAR все ещё установлен
    Array
    (
        [0] => FIELD_ERA
        [1] => FIELD_MONTH
        [2] => FIELD_DATE
        [3] => FIELD_EXTENDED_YEAR
    )

    bool(true)
    После того, как поле EXTENDED_YEAR было очищено
    Array
    (
        [0] => FIELD_ERA
        [1] => FIELD_MONTH
        [2] => FIELD_DATE
    )
    15/03/1970 00:00:00

    После пересчёта полей,
     снова установлено поле EXTENDED_YEAR (до 1970 г.)
    Array
    (
        [0] => FIELD_ERA
        [1] => FIELD_MONTH
        [2] => FIELD_DATE
        [3] => FIELD_EXTENDED_YEAR
    )

    После вызова варианта без аргументов
    Array
    (
    )
    01/01/1970 00:00:00

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