CakeFest 2024: The Official CakePHP Conference

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 или будут отсутствовать. Если это необходимо для построения временной метки или объекта DateTimeImmutable из одной и той же строки параметра datetime, большее количество полей может быть установлено в значение не false. Смотрите примеры, в которых это происходит.

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

datetime

Дата/время в формате, распознаваемом функцией DateTimeImmutable::__construct().

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

Возвращает массив (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' будет содержать сообщения об этих ошибках.

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

Версия Описание
7.2.0 Элемент возвращаемого массива с ключом zone теперь содержит секунды, а не минуты. Кроме того, знак инвертирован. Т.е. раньше был -120, а теперь 7200.

Примеры

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

add a note

User Contributed Notes

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