
В PHP работа с датами реализована через встроенные функции и классы, что позволяет быстро вывести текущее время сервера. Наиболее часто используется функция date(), которая возвращает дату и время в заданном формате. Например, вызов date(«Y-m-d») вернёт строку вида 2025-09-20.
При необходимости работать с часовыми поясами стоит использовать класс DateTime. Он позволяет задать конкретный таймзон и получить результат в требуемом виде: (new DateTime(«now», new DateTimeZone(«Europe/Moscow»)))->format(«d.m.Y H:i»). Такой подход удобен, если важно получать корректное время независимо от настроек сервера.
Функция date() используется для форматированного отображения даты и времени. Она принимает строку формата и возвращает результат в виде текста.
Простейший пример:
<?php
echo date("d.m.Y");
?>
Наиболее часто применяемые символы формата:
| Символ | Описание | Пример |
|---|---|---|
d |
День месяца (с ведущим нулём) | 20 |
m |
Месяц (с ведущим нулём) | 09 |
Y |
Год в 4-значном формате | 2025 |
H |
Часы в 24-часовом формате | 14 |
i |
Минуты с ведущим нулём | 07 |
s |
Секунды с ведущим нулём | 59 |
<?php
echo date("d.m.Y H:i:s");
?>
Перед использованием функции полезно задать часовой пояс:
<?php
date_default_timezone_set("Europe/Moscow");
echo date("d.m.Y H:i:s");
?>
Использование date() для отображения времени вместе с датой

Пример базового использования:
<?php
echo date("d.m.Y H:i:s");
?>
В этом примере:
d– число месяца с ведущим нулём (01–31);m– номер месяца (01–12);Y– полный год из четырёх цифр;H– часы в 24-часовом формате (00–23);i– минуты (00–59);s– секунды (00–59).
Распространённые варианты формата:
date("d.m.Y H:i")– дата и время без секунд;date("Y-m-d H:i:s")– универсальный формат, часто используемый в базах данных;date("d F Y, H:i")– дата с названием месяца и временем.
<?php
date_default_timezone_set("Europe/Moscow");
echo date("d.m.Y H:i:s");
?>
Форматирование даты через параметры функции date()

Функция date() принимает строку формата, где каждый символ обозначает часть даты или времени. Например, Y – год в четыре цифры, y – в две, m – месяц с ведущим нулём, n – без него, d – день месяца, H – часы в 24-часовом формате, h – в 12-часовом.
Пример: echo date("d.m.Y H:i"); вернёт результат вроде 20.09.2025 14:37. Здесь d.m.Y формирует дату, а H:i – время.
Чтобы получить название месяца, используйте F (полное) или M (сокращённое). Например, date("d F Y") выведет 20 September 2025. Для дня недели подойдут l (полностью) и D (сокращённо).
Комбинируя символы, можно составить любой формат: date("Y-m-d\TH:i:s") вернёт строку в стандарте ISO 8601, пригодную для хранения в базе данных.
Получение даты в объекте DateTime
Класс DateTime удобен, когда требуется работать с датой как с объектом, а не со строкой.
Простейший пример:
$date = new DateTime();
echo $date->format('Y-m-d H:i:s');
Основные преимущества:
- Гибкая работа с часовыми поясами через
DateTimeZone. - Методы для изменения даты:
modify(),add(),sub(). - Поддержка сравнения дат при помощи операторов.
Создание объекта с указанием часового пояса:
$tz = new DateTimeZone('Europe/Moscow');
$date = new DateTime('now', $tz);
echo $date->format('d.m.Y H:i');
Примеры изменения даты:
$date = new DateTime();
$date->modify('+2 days');
echo $date->format('d.m.Y');
$date->sub(new DateInterval('P1M'));
echo $date->format('d.m.Y');
Сравнение дат:
$d1 = new DateTime('2025-01-01');
$d2 = new DateTime('2025-05-01');
if ($d1 < $d2) {
echo 'Первая дата меньше второй';
}
Класс DateTime позволяет создавать объект даты и времени с последующим форматированием с помощью метода format(). Такой подход удобен, когда требуется гибко управлять отображением.
Пример получения текущей даты:
<?php
$date = new DateTime();
echo $date->format('Y-m-d');
?>
Формат задаётся с использованием специальных символов. Например:
Y– полный год (например, 2025)m– месяц с ведущим нулёмd– день месяцаH– часы в 24-часовом форматеi– минутыs– секунды
<?php
$date = new DateTime();
echo $date->format('d.m.Y H:i:s');
?>
При необходимости можно передать строку в конструктор DateTime для работы с конкретной датой:
<?php
$date = new DateTime('2025-09-20 15:30:00');
echo $date->format('d.m.Y H:i');
?>
Метод format() обеспечивает контроль над любым элементом даты и времени, что делает его предпочтительным инструментом для точного отображения.
Установка часового пояса при работе с датой
Пример:
date_default_timezone_set('Europe/Moscow');
echo date('Y-m-d H:i:s');
Список допустимых значений можно получить через timezone_identifiers_list(). Например, Europe/Moscow, Asia/Yekaterinburg, America/New_York.
Для проверки текущего пояса применяется date_default_timezone_get(). Если в коде он не задан, рекомендуется установить его в php.ini с помощью директивы:
date.timezone = "Europe/Moscow"
Установка явного пояса гарантирует корректный расчет времени при работе с базами данных, логами и планировщиками задач.
Сравнение функций date() и DateTime

date() возвращает строку с датой и временем по заданному формату. Она работает с глобальной временной зоной, заданной через date_default_timezone_set(), и не позволяет удобно управлять разными часовыми поясами одновременно.
DateTime представляет объект, с которым можно выполнять операции: прибавлять или вычитать интервалы, задавать конкретный часовой пояс, форматировать результат через метод format(). Это удобнее при сложных вычислениях и работе с разными регионами.
Если требуется вывести только текущую дату или время в простом формате, достаточно date(). При необходимости проводить преобразования, сравнения или манипуляции с разными часовыми поясами лучше использовать DateTime.
Получение даты в формате ISO 8601
Для генерации даты в формате ISO 8601 в PHP используется функция date() с символом формата c. Пример: echo date('c');. Результат будет выглядеть так: 2025-09-20T14:35:12+03:00.
Более гибкий способ – класс DateTime. Пример: $dt = new DateTime(); echo $dt->format(DateTime::ATOM);. Константа DateTime::ATOM соответствует ISO 8601.
Чтобы задать часовой пояс: $dt = new DateTime('now', new DateTimeZone('UTC')); echo $dt->format(DateTime::ATOM);. Это позволит получить время в UTC, что полезно при работе с API и логированием.
Вопрос-ответ:
Как в PHP получить текущую дату в формате «день-месяц-год»?
Для этого используется функция date(). Пример: echo date('d-m-Y');. Здесь d обозначает день с ведущим нулем, m — месяц с ведущим нулем, Y — четырёхзначный год. Такой подход подходит для отображения даты на сайте или в логах.
Можно ли получить текущую дату с учётом временной зоны в PHP?
Да, PHP позволяет установить временную зону с помощью функции date_default_timezone_set(). Например: date_default_timezone_set('Europe/Moscow'); echo date('Y-m-d H:i:s');. Это гарантирует, что возвращаемая дата и время соответствуют выбранной зоне.
Чем отличается использование функции date() и класса DateTime для получения текущей даты?
Функция date() проще и подходит для быстрого вывода даты. Класс DateTime даёт больше возможностей: позволяет работать с интервалами, изменять дату, форматировать её в различных стилях и учитывать временные зоны без глобальной смены настроек. Например, $dt = new DateTime('now', new DateTimeZone('Europe/Moscow')); echo $dt->format('d-m-Y H:i');.
Как вывести только текущий год или месяц в PHP?
Функция date() позволяет получать отдельные части даты. Для года используется Y, для месяца — m. Примеры: echo date('Y'); выведет год, а echo date('m'); — месяц. Такой метод удобен для генерации отчётов или фильтров по дате.
