update page now
Laravel Live Japan

date_parse

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

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

Описание

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() - Возвращает информацию о дате и времени

Добавить

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

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