PHP 8.1.9 Released!

IntlCalendar::clear

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

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

Описание

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

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

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

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

Очищает либо все поля, либо определённое поле. Очищенное поле помечается как не заданное, что даёт ему самый низкий приоритет по отношению к переопределяющим полям или даже значениям по умолчанию при вычислении времени. Кроме того, его значение установлено на 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/* Март */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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top