Как получить текущую дату и время в PHP: гайд 2025

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Как получить текущую дату и время в PHP: лучшие практики в 2025

Каждый PHP-разработчик, от новичка до сеньора, хотя бы раз задавался вопросом: "How do I get the current date and time in PHP?". Этот запрос на Stack Overflow набрал тысячи просмотров и не теряет актуальности. В 2025 году, когда PHP продолжает уверенно держать позиции в веб-разработке, умение правильно работать с датами и временем — не просто базовая компетенция, а необходимость. Логирование, кэширование, отчёты, работа с API — всё это требует точного времени. В этой статье мы разберём не только классические функции, но и современные лучшие практики, чтобы ваш код был чистым, надёжным и готовым к любым часовым поясам.

Классика: date() и time()

Самый простой и быстрый способ получить текущую дату и время в PHP — функция date(). Она принимает строку формата и возвращает отформатированную дату на основе текущего времени сервера или указанного timestamp.

<?php
echo date('Y-m-d H:i:s'); // 2025-04-10 14:30:00
echo date('d.m.Y');        // 10.04.2025
echo date('r');            // Thu, 10 Apr 2025 14:30:00 +0300
?>

А если нужен только Unix timestamp (количество секунд с 1 января 1970 года)? Используйте time():

<?php
$timestamp = time();
echo $timestamp; // 1744273800 (пример)
echo date('Y-m-d H:i:s', $timestamp);
?>

Важно: date() использует часовой пояс, установленный в php.ini через директиву date.timezone, или заданный функцией date_default_timezone_set(). В 2025 году это всё ещё рабочий вариант для простых скриптов, но для серьёзных проектов есть более гибкие инструменты.

Современный подход: класс DateTime

Начиная с PHP 5.2 (а это было давно), в языке появился объектно-ориентированный способ работы с датами — класс DateTime. Он стал стандартом де-факто для большинства фреймворков и CMS. Почему? Потому что он гибче, читаемее и безопаснее.

<?php
$now = new DateTime();
echo $now->format('Y-m-d H:i:s'); // 2025-04-10 14:30:00

// С указанием часового пояса
$now = new DateTime('now', new DateTimeZone('Europe/Moscow'));
echo $now->format('Y-m-d H:i:s'); // 2025-04-10 14:30:00 (MSK)
?>

DateTime позволяет легко манипулировать датами: прибавлять дни, вычитать месяцы, сравнивать объекты. Например:

<?php
$today = new DateTime();
$nextWeek = (new DateTime())->modify('+7 days');
$diff = $nextWeek->diff($today);
echo $diff->days; // 7
?>

Именно этот подход рекомендуется в лучших практиках PHP 2025 года. Он иммутабелен (если не изменять объект напрямую) и интуитивно понятен.

Иммутабельный вариант: DateTimeImmutable

Если вы работаете в серьёзном проекте, где важна предсказуемость, используйте DateTimeImmutable. В отличие от DateTime, его методы не изменяют исходный объект, а возвращают новый. Это предотвращает случайные мутации состояния.

<?php
$date = new DateTimeImmutable('2025-04-10');
$newDate = $date->modify('+1 month');
echo $date->format('Y-m-d');    // 2025-04-10 (не изменилось)
echo $newDate->format('Y-m-d'); // 2025-05-10
?>

В 2025 году это считается хорошим тоном — используйте DateTimeImmutable везде, где только можно.

Часовые пояса: настройка и конвертация

Ошибка с часовым поясом — одна из самых частых проблем. Представьте: сервер в США, пользователь в России, а вы показываете время по Гринвичу. Классический провал.

Чтобы избежать этого, всегда явно указывайте часовой пояс. Самый надёжный способ — установить его в начале скрипта с помощью date_default_timezone_set():

<?php
date_default_timezone_set('UTC'); // или 'Europe/Moscow', 'Asia/Yekaterinburg'
?>

Для DateTime можно указать пояс прямо в конструкторе или изменить через setTimezone():

<?php
$date = new DateTime('now', new DateTimeZone('America/New_York'));
echo $date->format('Y-m-d H:i:s'); // время Нью-Йорка

$date->setTimezone(new DateTimeZone('Asia/Tokyo'));
echo $date->format('Y-m-d H:i:s'); // теперь Токио
?>

Список популярных часовых поясов для PHP-разработчика:

  • UTC — универсальное координированное время
  • Europe/Moscow — Москва (UTC+3)
  • Europe/Kiev — Киев (UTC+2/UTC+3)
  • Asia/Yekaterinburg — Екатеринбург (UTC+5)
  • America/New_York — Нью-Йорк (UTC-5)
  • Asia/Tokyo — Токио (UTC+9)

Форматирование: популярные маски

Формат даты зависит от задачи: база данных любит Y-m-d H:i:s, пользователь — d.m.Y или j F Y. Вот шпаргалка по самым ходовым символам форматирования:

  • Y — год (4 цифры), y — год (2 цифры)
  • m — месяц (01-12), n — месяц (1-12 без нуля), M — короткое название месяца (Jan, Feb...)
  • d — день (01-31), j — день (1-31 без нуля)
  • H — часы (00-23), h — часы (01-12), i — минуты (00-59), s — секунды (00-59)
  • l — полное название дня недели (Monday, Sunday...)
  • r — RFC 2822 формат (Thu, 10 Apr 2025 14:30:00 +0300)
<?php
$now = new DateTime();
echo                

Блоги

Рекомендаций по книгам