date_parse
Возвращает ассоциативный массив с подробной информацией о заданной дате/времени
&reftitle.description;
arraydate_parsestringdatetime
Функция date_parse разбирает указанную
в параметре datetime строку по тем же правилам,
что и функции strtotime и DateTimeImmutable::__construct.
Вместо того чтобы возвращать временную метку Unix (при использовании функции strtotime) или объект DateTimeImmutable (при использовании функции DateTimeImmutable::__construct),
она возвращает ассоциативный массив с информацией,
которую функция смогла обнаружить в данной строке параметра datetime.
Если информация об определённой группе элементов не найдена,
эти элементы массива будут установлены в значение &false; или будут отсутствовать.
Если это необходимо для построения временной метки или объекта DateTimeImmutable
из одной и той же строки параметра datetime,
большее количество полей может быть установлено в значение не &false;.
Смотрите примеры, в которых это происходит.
&reftitle.parameters;
datetime
Дата/время в формате, распознаваемом функцией DateTimeImmutable::__construct.
&reftitle.returnvalues;
Возвращает массив (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,
если они возникли в одной и той же позиции.
&reftitle.errors;
В случае возникновения ошибок форматирования даты/времени, элемент массива 'errors' будет
содержать сообщения об этих ошибках.
&reftitle.changelog;
&Version;&Description;7.2.0
Элемент возвращаемого массива с ключом zone
теперь содержит секунды, а не минуты. Кроме того, знак
инвертирован. Т.е. раньше был
-120, а теперь 7200.
&reftitle.examples;
Пример использования функции date_parse с полной строкой datetime
]]>
&example.outputs;
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 и ещё несколько в зависимости от его значения.
Пример использования date_parse с информацией об аббревиатуре часового пояса
]]>
&example.outputs;
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"
}
]]>
Пример использования date_parse с информацией об идентификаторе часового пояса
]]>
&example.outputs;
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;.
Пример использования date_parse с минимальной строкой
]]>
&example.outputs;
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".
Пример использования date_parse с относительными форматами
]]>
&example.outputs;
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;.
Пример использования date_parse с побочными эффектами
]]>
&example.outputs;
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)
}
}
]]>
&reftitle.seealso;
date_parse_from_format для разбора параметра datetime с определённым заданным форматомcheckdate для проверки григорианской датыgetdate