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