Date parse from format: примеры (PHP)

Использование date_parse_from_format для парсинга дат в PHP
Раздел: Дата и время
date_parse_from_format(string $format, string $datetime): array

Основные сведения о функции date_parse_from_format

Функция date_parse_from_format анализирует строку с датой и временем согласно указанному формату. Она применяется, когда необходимо преобразовать строку в структурированный массив с компонентами даты.

Синтаксис и параметры

Синтаксис: date_parse_from_format(string $format, string $datetime): array

$format - строка формата, используемая теми же спецификаторами, что и в функции date().

$datetime - строка, представляющая дату и время.

Функция возвращает ассоциативный массив с детальной информацией о дате или false при ошибке.

Простые примеры использования

Базовый разбор даты
<?
$dateString = "15.03.2023";
$result = date_parse_from_format("d.m.Y", $dateString);
print_r($result);
?>
Array
(
    [year] => 2023
    [month] => 3
    [day] => 15
    [hour] => false
    [minute] => false
    [second] => false
    [fraction] => false
    [warning_count] => 0
    [warnings] => Array ()
    [error_count] => 0
    [errors] => Array ()
    [is_localtime] => false
)
Работа с временем
<?
$result = date_parse_from_format("Y-m-d H:i:s", "2023-12-31 23:59:58");
print_r($result);
?>
Array
(
    [year] => 2023
    [month] => 12
    [day] => 31
    [hour] => 23
    [minute] => 59
    [second] => 58
    ...
)

Альтернативные функции в PHP

DateTime::createFromFormat

Создает объект DateTime из строки по формату. Предпочтительнее при необходимости объектного подхода и дальнейших манипуляций с датой.

strtotime

Преобразует текстовое представление даты на английском в метку времени. Удобна для парсинга относительных выражений вроде "next Monday".

Проверяет корректность григорианской даты. Используется для валидации без разбора строки.

Типичные ошибки

Несоответствие формата
<?
$result = date_parse_from_format("d-m-Y", "15/03/2023");
print_r($result['errors']);
?>
Array
(
    [0] => The separation symbol could not be found
)
Некорректные значения
<?
$result = date_parse_from_format("d.m.Y", "32.13.2023");
print_r($result['errors']);
?>
Array
(
    [day] => The day is out of range
    [month] => The month is out of range
)

Изменения в версиях PHP

В PHP 8.0 функция теперь возвращает false при передаче неверного формата вместо генерации предупреждения. Улучшена обработка микросекунд.

В PHP 8.1 добавлена более точная обработка предупреждений для неверных значений времени.

Расширенные примеры

Работа с микросекундами
Пример php
<?
$result = date_parse_from_format("Y-m-d H:i:s.u", "2023-05-20 14:30:15.123456");
print_r($result['fraction']);
?>
0.123456
Частичный разбор
Пример php
<?
$result = date_parse_from_format("Y-m", "2023-12");
print_r([$result['year'], $result['month']]);
?>
Array
(
    [0] => 2023
    [1] => 12
)
Обработка временных зон
Пример php
<?
$result = date_parse_from_format("Y-m-d H:i:sP", "2023-07-15 10:30:00+03:00");
print_r([$result['hour'], $result['is_localtime'], $result['zone']]);
?>
Array
(
    [0] => 10
    [1] => 1
    [2] => 180
)

Аналоги в других языках

Python: datetime.strptime
from datetime import datetime
date_obj = datetime.strptime("15.03.2023", "%d.%m.%Y")
print(date_obj)
2023-03-15 00:00:00
JavaScript: библиотеки moment.js или date-fns
// С использованием date-fns
import { parse } from 'date-fns';
const date = parse('15.03.2023', 'dd.MM.yyyy', new Date());
MySQL: STR_TO_DATE
SELECT STR_TO_DATE('15,03,2023', '%d,%m,%Y');
2023-03-15

PHP date_parse_from_format function comments

En
Date parse from format Get info about given date formatted according to the specified format