(PHP 5 >= 5.3.0, PHP 7, PHP 8)
date_parse_from_format — Получение информации о заданной в определённом формате дате
$format
, string $datetime
): arrayВозвращает ассоциативный массив с подробной информацией о заданной дате/времени.
format
Документацию по параметру format
, смотрите в документации
к методу DateTimeImmutable::createFromFormat().
Применяются те же правила.
datetime
Строка, представляющая дату/время.
Возвращает ассоциативный массив с подробной информацией о заданной дате/времени.
Возвращаемый массив содержит ключи year
,
month
, day
, hour
,
minute
, second
,
fraction
и is_localtime
.
Если присутствует is_localtime
, то zone_type
указывает тип часового пояса.
Для типа 1
(смещение UTC) указывается zone
, добавляется поле is_dst
;
для типа 2
(аббревиатура) добавляются поля tz_abbr
и is_dst
;
для типа 3
(идентификатор часового пояса) добавляются поля tz_abbr
и tz_id
.
Если в параметре datetime
присутствуют элементы относительного времени,
например, +3 days
, то возвращаемый массив включает вложенный массив с ключом relative
.
Этот массив затем содержит ключи
year
, month
, day
,
hour
, minute
,
second
, и, если необходимо, weekday
и
weekdays
, в зависимости от переданной строки.
Массив включает поля warning_count
и warnings
.
Первое из них указывает, сколько было предупреждений.
Ключи элементов массива warnings
указывают на позицию в данном параметре datetime
,
где произошло предупреждение, а строковое значение описывает само предупреждение.
Массив также содержит поля error_count
и errors
.
Первое из них указывает, сколько ошибок было найдено.
Ключи элементов массива errors
указывают на позицию в данном параметре datetime
,
где произошла ошибка, а строковое значение описывает саму ошибку.
Количество элементов массивов warnings
и
errors
может быть меньше, чем
warning_count
или error_count
,
если они возникли в одной и той же позиции.
Функция выбрасывает ValueError,
если параметр datetime
содержит нулевые байты.
Версия | Описание |
---|---|
8.0.21, 8.1.8, 8.2.0 |
Теперь при передаче нулевых байтов в параметр datetime
выбрасывается ValueError,
который ранее молча игнорировался.
|
7.2.0 |
Элемент zone возвращаемого массива отображает теперь
секунды вместо минут, а его знак инвертируется. Например,
-120 теперь будет 7200 .
|
Пример #1 Пример использования date_parse_from_format()
<?php
$date = "6.1.2009 13:00+01:00";
print_r(date_parse_from_format("j.n.Y H:iP", $date));
?>
Результат выполнения данного примера:
Array ( [year] => 2009 [month] => 1 [day] => 6 [hour] => 13 [minute] => 0 [second] => 0 [fraction] => [warning_count] => 0 [warnings] => Array ( ) [error_count] => 0 [errors] => Array ( ) [is_localtime] => 1 [zone_type] => 1 [zone] => -60 [is_dst] => )
Пример #2 Пример использования date_parse_from_format() с предупреждениями
<?php
$date = "26 August 2022 22:30 pm";
$parsed = date_parse_from_format("j F Y G:i a", $date);
echo "Количество предупреждений: ", $parsed['warning_count'], "\n";
foreach ($parsed['warnings'] as $position => $message) {
echo "\tПозиция {$position}: {$message}\n";
}
?>
Результат выполнения данного примера:
Количество предупреждений: 1 Позиция 23: The parsed time was invalid
Пример #3 Пример использования date_parse_from_format() с ошибками
<?php
$date = "26 August 2022 CEST";
$parsed = date_parse_from_format("j F Y H:i", $date);
echo "Количество ошибок: ", $parsed['error_count'], "\n";
foreach ($parsed['errors'] as $position => $message) {
echo "\tПозиция {$position}: {$message}\n";
}
?>
Результат выполнения данного примера:
Количество ошибок: 3 Позиция 15: A two digit hour could not be found Позиция 19: Data missing