PHP 8.3.4 Released!

date_parse_from_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_parse_from_format Получение информации о заданной в определённом формате дате

Описание

date_parse_from_format(string $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

Смотрите также

  • DateTimeImmutable::createFromFormat() - Разбирает строку с датой согласно указанному формату
  • checkdate() - Проверяет корректность даты по григорианскому календарю

add a note

User Contributed Notes

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