PHP Conference Nagoya 2025

IntlCalendar::clear

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

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

Описание

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

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

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

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

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

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

calendar

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

field

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

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

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

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

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

Примеры

Пример #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

Добавить

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

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