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

Функция date_format: руководство и примеры применения
Раздел: Дата и время
date_format(DateTimeInterface $object, string $format): string
Описание функции date_format

Функция date_format применяется для форматирования объекта DateTime в строковое представление согласно заданному формату. Она является методом-оберткой для DateTime::format(). Использование этой функции связано с объектно-ориентированным стилем работы с датами и временем в PHP.

Аргументы функции
  • object (обязательный) - экземпляр класса DateTime, который требуется отформатировать.
  • format (обязательный) - строка формата, состоящая из спецификаторов. Спецификаторы аналогичны используемым в функции date() (например, Y - год 4 цифры, m - месяц с ведущим нулем, d - день месяца).

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

Базовые примеры использования
<?php
$date = date_create('2023-12-25 15:30:00');
echo date_format($date, 'Y-m-d');
?>
2023-12-25
<?php
$date = date_create();
echo date_format($date, 'd.m.Y H:i:s');
?>
[Текущая дата и время, например, 08.11.2023 10:05:22]
<?php
$date = date_create('next Monday');
echo date_format($date, '\D\a\y: l, \D\a\t\e: d F Y');
?>
Day: Monday, Date: 13 November 2023
Похожие функции в PHP
  • date() - форматирует временную метку Unix. Работает быстрее для простых задач, но не поддерживает временные зоны через объекты.
  • DateTime::format() - объектно-ориентированный аналог date_format. Использование предпочтительнее в современном коде.
  • strftime() (устарела с PHP 8.1) - форматировала дату/время с учетом локали. Для локализации теперь используют IntlDateFormatter.
Типичные ошибки
Передача не объекта DateTime
<?php
$result = date_format('2023-12-25', 'Y-m-d');
var_dump($result);
?>
bool(false)
Использование неверного спецификатора формата
<?php
$date = date_create();
echo date_format($date, 'Год: Y'); // Кириллица в формате
?>
Год: 2023 // Работает, но лучше экранировать
Изменения в последних версиях PHP

В PHP 8.0 функция date_format стала строго типизированной: при передаче значения, не являющегося объектом DateTime, выбрасывается исключение TypeError. В более ранних версиях возвращалось false.

<?php
// PHP 8+
try {
    date_format('not_a_date', 'Y');
} catch (TypeError $e) {
    echo $e->getMessage();
}
?>
date_format(): Argument #1 ($object) must be of type DateTimeInterface, string given
Расширенные примеры
Работа с временными зонами
Пример php
<?php
$date = date_create('2023-12-25 15:30:00', new DateTimeZone('America/New_York'));
echo date_format($date, 'Y-m-d H:i:s P');
?>
2023-12-25 15:30:00 -05:00
Форматирование интервалов
Пример php
<?php
$date1 = date_create('2023-01-01');
$date2 = date_create('2023-12-31');
$interval = date_diff($date1, $date2);
echo $interval->format('%R%a дней');
?>
+364 дней
Спецификаторы для разных локалей
Пример php
<?php
$date = date_create();
setlocale(LC_TIME, 'ru_RU.UTF-8');
// Внимание: strftime устарела
// Альтернатива для локали:
$formatter = new IntlDateFormatter('ru_RU', IntlDateFormatter::FULL, IntlDateFormatter::FULL);
echo $formatter->format($date);
?>
8 ноября 2023 г., 10:05:22 UTC
Аналоги в других языках

Date format в Python

from datetime import datetime
dt = datetime(2023, 12, 25, 15, 30)
print(dt.strftime('%Y-%m-%d %H:%M:%S'))
2023-12-25 15:30:00

Date format в Javascript

const dt = new Date('2023-12-25T15:30:00');
console.log(dt.toLocaleDateString('ru-RU'));
console.log(dt.toISOString().slice(0, 19));
25.12.2023
2023-12-25T15:30:00

Date format в MySQL

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
2023-11-08 10:05:22

PHP date_format function comments

En
Date format Returns date formatted according to given format