date_parse
(PHP 5 >= 5.2.0, PHP 7, PHP 8)
date_parse —
Возвращает ассоциативный массив с подробной информацией о заданной дате/времени
Описание
date_parse(string $datetime
): array
Если информация об определённой группе элементов не найдена,
эти элементы массива будут установлены в значение false
или будут отсутствовать.
Если это необходимо для построения временной метки или объекта DateTimeImmutable
из одной и той же строки параметра datetime
,
большее количество полей может быть установлено в значение не false
.
Смотрите примеры, в которых это происходит.
Возвращаемые значения
Возвращает массив (array), содержащий информацию о дате/времени
в случае успешного выполнения или false
в случае возникновения ошибки.
Ошибки
В случае возникновения ошибок форматирования даты/времени, элемент массива 'errors' будет
содержать сообщения об этих ошибках.
Примеры
Пример #1 Пример использования функции date_parse() с полной строкой datetime
<?php
var_dump(date_parse("2006-12-12 10:00:00.5"));
?>
Результат выполнения данного примера:
array(12) {
'year' => int(2006)
'month' => int(12)
'day' => int(12)
'hour' => int(10)
'minute' => int(0)
'second' => int(0)
'fraction' => double(0.5)
'warning_count' => int(0)
'warnings' => array(0) {
}
'error_count' => int(0)
'errors' => array(0) {
}
'is_localtime' => bool(false)
}
Элементы часовых поясов появляются только в том случае,
если они включены в заданную строку параметра datetime
.
В этом случае всегда будет присутствовать элемент zone_type
и ещё несколько в зависимости от его значения.
Пример #2 Пример использования date_parse() с информацией об аббревиатуре часового пояса
<?php
var_dump(date_parse("June 2nd, 2022, 10:28:17 BST"));
?>
Результат выполнения данного примера:
array(16) {
'year' => int(2022)
'month' => int(6)
'day' => int(2)
'hour' => int(10)
'minute' => int(28)
'second' => int(17)
'fraction' => double(0)
'warning_count' => int(0)
'warnings' => array(0) {
}
'error_count' => int(0)
'errors' => array(0) {
}
'is_localtime' => bool(true)
'zone_type' => int(2)
'zone' => int(0)
'is_dst' => bool(true)
'tz_abbr' => string(3) "BST"
}
Пример #3 Пример использования date_parse() с информацией об идентификаторе часового пояса
<?php
var_dump(date_parse("June 2nd, 2022, 10:28:17 Europe/London"));
?>
Результат выполнения данного примера:
array(14) {
'year' => int(2022)
'month' => int(6)
'day' => int(2)
'hour' => int(10)
'minute' => int(28)
'second' => int(17)
'fraction' => double(0)
'warning_count' => int(0)
'warnings' => array(0) {
}
'error_count' => int(0)
'errors' => array(0) {
}
'is_localtime' => bool(true)
'zone_type' => int(3)
'tz_id' => string(13) "Europe/London"
}
Если разбирается более минимальная строка параметра datetime
,
то информации будет меньше. В этом примере все части времени возвращаются как false
.
Пример #4 Пример использования date_parse() с минимальной строкой
<?php
var_dump(date_parse("June 2nd, 2022"));
?>
Результат выполнения данного примера:
array(12) {
'year' => int(2022)
'month' => int(6)
'day' => int(2)
'hour' => bool(false)
'minute' => bool(false)
'second' => bool(false)
'fraction' => bool(false)
'warning_count' => int(0)
'warnings' => array(0) {
}
'error_count' => int(0)
'errors' => array(0) {
}
'is_localtime' => bool(false)
}
Относительные форматы не влияют на значения,
разбираемые из абсолютных форматов, но разбираются в элемент "relative".
Пример #5 Пример использования date_parse() с относительными форматами
<?php
var_dump(date_parse("2006-12-12 10:00:00.5 +1 week +1 hour"));
?>
Результат выполнения данного примера:
array(13) {
'year' => int(2006)
'month' => int(12)
'day' => int(12)
'hour' => int(10)
'minute' => int(0)
'second' => int(0)
'fraction' => double(0.5)
'warning_count' => int(0)
'warnings' => array(0) {
}
'error_count' => int(0)
'errors' => array(0) {
}
'is_localtime' => bool(false)
'relative' =>
array(6) {
'year' => int(0)
'month' => int(0)
'day' => int(7)
'hour' => int(1)
'minute' => int(0)
'second' => int(0)
}
}
Некоторые строки, такие как Thursday
, установят временную часть строки в значение 0
.
Если Thursday
передать в функцию DateTimeImmutable::__construct(),
то это также приведёт к тому, что час, минута, секунда и дробь будут установлены в значение 0
.
В приведённом ниже примере элемент year, однако, оставлен как false
.
Пример #6 Пример использования date_parse() с побочными эффектами
<?php
var_dump(date_parse("Thursday, June 2nd"));
?>
Результат выполнения данного примера:
array(13) {
'year' => bool(false)
'month' => int(6)
'day' => int(2)
'hour' => int(0)
'minute' => int(0)
'second' => int(0)
'fraction' => double(0)
'warning_count' => int(0)
'warnings' => array(0) {
}
'error_count' => int(0)
'errors' => array(0) {
}
'is_localtime' => bool(false)
'relative' =>
array(7) {
'year' => int(0)
'month' => int(0)
'day' => int(0)
'hour' => int(0)
'minute' => int(0)
'second' => int(0)
'weekday' => int(4)
}
}
Смотрите также
- date_parse_from_format() - Получение информации о заданной в определённом формате дате для разбора параметра
datetime
с определённым заданным форматом
- checkdate() - Проверяет корректность даты по григорианскому календарю
- getdate() - Возвращает информацию о дате/времени