🧱 Суть

В PHP для работы с датой и временем используется класс DateTime.

Он позволяет:

  • получать текущую дату и время
  • форматировать даты
  • изменять значения
  • сравнивать даты
  • работать с часовыми поясами

Пример:

$date = new DateTime();
 
echo $date->format('Y-m-d');

Результат:

2026-07-17

📦 Проблема

1. Ручная работа со строками дат

Например:

$date = "17.07.2026";

Такая строка не является полноценной датой, и с ней сложно выполнять операции.

2. Разные форматы даты

Одна и та же дата может выглядеть по-разному:

2026-07-17
17.07.2026
July 17, 2026

Без единого подхода возникают ошибки при обмене данными.

3. Проблемы с часовыми поясами

Одинаковое время может означать разные моменты в разных странах.

✅ Решение

Использовать DateTime вместо ручной обработки строк:

  • хранить даты в стандартном формате
  • явно указывать часовой пояс
  • использовать встроенные методы для операций со временем

💻 Код

Создание даты

Текущая дата и время:

$date = new DateTime();

С конкретной датой:

$date = new DateTime('2026-07-17');

С временем:

$date = new DateTime('2026-07-17 15:30:00');

Форматирование даты

Метод format() превращает дату в строку:

$date = new DateTime();
 
echo $date->format('Y-m-d');

Популярные форматы:

ФорматЗначение
Yгод (4 цифры)
mмесяц
dдень
Hчасы
iминуты
sсекунды
Пример:
echo $date->format('d.m.Y H:i');

Результат:

17.07.2026 15:30

Часовые пояса

Часовой пояс задаётся через DateTimeZone:

$date = new DateTime(
    'now',
    new DateTimeZone('Europe/Amsterdam')
);

Получить текущую временную зону:

echo $date->getTimezone()->getName();

Изменение даты

Метод modify() изменяет значение:

$date = new DateTime();
 
$date->modify('+1 day');

Примеры:

$date->modify('+1 month');
 
$date->modify('-2 hours');

Добавление и вычитание времени

Через DateInterval:

$date = new DateTime();
 
$interval = new DateInterval('P7D');
 
$date->add($interval);

Обозначения:

  • P – период
  • D – дни
  • M – месяцы
  • Y – годы

Пример:

P7D

означает:

7 дней

Сравнение дат

Объекты DateTime можно сравнивать:

$date1 = new DateTime('2026-01-01');
$date2 = new DateTime('2026-12-01');
 
if ($date1 < $date2) {
    echo "Первая дата раньше";
}

Разница между датами

Метод diff():

$date1 = new DateTime('2026-01-01');
$date2 = new DateTime('2026-07-01');
 
$diff = $date1->diff($date2);
 
echo $diff->days;

Результат:

181

Создание даты из timestamp

Timestamp – количество секунд с 1 января 1970 года.

Создание:

$date = new DateTime();
 
echo $date->getTimestamp();

Из timestamp:

$date = new DateTime('@1752700000');

Статический класс DateTimeImmutable

DateTime изменяет исходный объект:

$date->modify('+1 day');

DateTimeImmutable создаёт новый объект:

$date = new DateTimeImmutable();
 
$newDate = $date->modify('+1 day');

Преимущество:

  • меньше неожиданных изменений
  • безопаснее при передаче между функциями

Частые практики в проектах

Хранить даты в БД:

Обычно используют:

YYYY-MM-DD HH:mm:ss

Пример:

2026-07-17 15:30:00

Хранить время в UTC

Частая практика:

База данных → UTC
        ↓
Пользовательский часовой пояс

Так проще работать с международными приложениями.

🎯 Вывод

  • DateTime – основной инструмент работы с датами в PHP
  • даты лучше хранить как объекты, а не строки
  • format() используется для вывода
  • modify() и DateInterval позволяют менять дату
  • часовые пояса нужно задавать явно
  • DateTimeImmutable помогает избежать случайных изменений
  • для серверных приложений часто используют UTC

🔗 Связано