(PHP 5 >= 5.3.0, PHP 7, PHP 8)
date_parse_from_format — Получение информации о заданной в определённом формате дате
Возвращает ассоциативный массив с подробной информацией о заданной дате/времени.
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