date_parse
(PHP 5 >= 5.2.0, PHP 7, PHP 8)
date_parse —
Возвращает ассоциативный массив с подробной информацией о заданной дате/времени
Описание
Если информация об определённой группе элементов не найдена,
эти элементы массива будут установлены в значение false
или будут отсутствовать.
Если это необходимо для построения временной метки или объекта DateTimeImmutable
из одной и той же строки параметра datetime
,
большее количество полей может быть установлено в значение не false
.
Смотрите примеры, в которых это происходит.
Возвращаемые значения
Возвращает массив (array), содержащий информацию о дате/времени.
Возвращаемый массив содержит ключи 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
,
если они возникли в одной и той же позиции.
Ошибки
В случае возникновения ошибок форматирования даты/времени, элемент массива '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"]=>
float(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"]=>
float(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"]=>
float(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"]=>
float(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"]=>
float(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() - Возвращает информацию о дате/времени