PHP 8.6.0 Beta 1 is available for testing

date_parse

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

date_parse Возвращает ассоциативный массив с подробной информацией о заданной дате/времени

Описание

function date_parse(string $datetime): array

Функция date_parse() разбирает строку параметра datetime аналогично функции strtotime() или методу DateTimeImmutable::__construct() , но вместо возврата метки Unix-времени, как это делает функция strtotime() , или объекта DateTimeImmutable , который создаёт метод DateTimeImmutable::__construct() ), функция возвращает ассоциативный массив с информацией, которую функция обнаружила в строке параметра datetime.

Функция установит элементам массива значение false или пропустит элемент, если не найдёт информацию о конкретных компонентах даты и времени. Поэтому в PHP предусмотрели другие функции для работы с датой и временем, которые при том же значении параметра datetime умеют создавать метку времени или объект DateTimeImmutable , в котором заполняют значения для большего количества компонентов времени, тогда как эта функция для аналогичных компонентов устанавливает значение false . Примеры на этой странице показывают обработку строк, из которых невозможно извлечь отдельные компоненты времени.

Список параметров

datetime

Строка с датой и временем в формате, который распознаёт метод DateTimeImmutable::__construct() .

Возвращаемые значения

Функция возвращает массив (array ) с информацией о дате и времени.

Результирующий массив содержит следующие ключи: year, month, day, hour, minute, second, fraction и is_localtime.

Элемент zone_type укажет тип часового пояса, если массив с результатами содержит элемент is_localtime. Для 1-го типа представления часовых поясов — со смещением относительно UTC — добавляются поля zone и is_dst; для 2-го типа представления — аббревиатура — добавляются поля tz_abbr и is_dst; для 3-го тип — идентификатор часового пояса — добавляются поля tz_abbr и tz_id.

Функция включит в массив с результатами массив relative, если строка datetime содержит элементы относительного времени наподобие +3 days. Массив с результатами разбора элементов времени в относительном формате содержит следующие ключи: 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' элементами с сообщениями об ошибках.

Список изменений

Версия Описание
7.2.0 Элемент zone в массиве результатов теперь содержит секунды вместо минут, а знак инвертируется, например: значение -120 теперь выводится как 7200.

Примеры

Пример #1 Пример разбора полной строки даты и времени datetimeа функцией date_parse()

<?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 функция установит для компонентов hour, minute, second и fraction значение 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() - Возвращает информацию о дате и времени

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы

AltStyle によって変換されたページ (->オリジナル) /