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