(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)
IntlCalendar::clear — Очищает поле или все поля
Объектно-ориентированный стиль
Процедурный стиль
Очищает либо все поля, либо определённое поле. Очищенное поле помечается как не заданное,
что даёт ему самый низкий приоритет по отношению к переопределяющим полям или даже значениям по умолчанию при вычислении времени.
Кроме того, его значение установлено на 0
, хотя, учитывая низкий приоритет поля,
его значение могло быть внутренне установлено на другое значение к моменту завершения запроса поля.
calendar
Экземпляр IntlCalendar.
field
Одна из представленных в классе IntlCalendar констант полей типа дата/время. Целое число
от 0
до
IntlCalendar::FIELD_COUNT
.
Функция всегда возвращает 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