
В PHP доступ к текущей дате и времени осуществляется через встроенные функции, которые не требуют установки сторонних библиотек. Самый распространённый метод – функция date(), которая позволяет получать время в любом формате, включая час, минуты, секунды и даже микросекунды. Например, date(‘H:i:s’) вернёт текущее время сервера в 24-часовом формате.
Для работы с временными зонами удобно использовать функцию date_default_timezone_set(). Она задаёт необходимую временную зону, что критично при отображении времени для пользователей из разных регионов. Например, date_default_timezone_set(‘Europe/Moscow’) корректно синхронизирует время с московским часовым поясом.
Если необходимо манипулировать датой и временем или выполнять вычисления, стоит применять объект DateTime. Он предоставляет методы format(), modify() и getTimestamp(), позволяя получать текущее время, добавлять интервалы и получать Unix-временную метку. Это упрощает задачи логирования и расчёта временных промежутков без ручной обработки строк.
Для быстрого получения текущей Unix-временной метки используется функция time(). Она возвращает количество секунд, прошедших с 1 января 1970 года, и может использоваться в системах кэширования, генерации уникальных идентификаторов и синхронизации времени между сервисами.
Функция date() в PHP позволяет форматировать текущую дату и время по заданному шаблону. Основной синтаксис функции выглядит так:
date(string $format, int|null $timestamp = null): string
Ниже приведены основные символы форматирования, которые чаще всего применяются для отображения текущей даты и времени:
| Символ | Описание | |
|---|---|---|
| d | День месяца с ведущим нулем | 05 |
| m | Месяц с ведущим нулем | 09 |
| Y | Год в 4 цифрах | 2025 |
| H | Часы в 24-часовом формате | 14 |
| i | Минуты с ведущим нулем | 07 |
| s | Секунды с ведущим нулем | 45 |
echo date("d.m.Y H:i:s");
date_default_timezone_set('Europe/Moscow');
Функция date() также позволяет комбинировать текст и переменные формата. Например:
echo "Сегодня ".date("d.m.Y").", текущее время ".date("H:i");
Используя date(), можно получать дату и время для логов, формирования меток времени или отображения на веб-страницах без необходимости дополнительных библиотек.
Получение метки времени Unix через time() и её применение
Функция time() возвращает текущую метку времени Unix – количество секунд, прошедших с 1 января 1970 года 00:00:00 GMT. Она всегда возвращает целое число типа int, что позволяет выполнять арифметические операции с датами и временем.
Простейший пример использования:
<?php
$timestamp = time();
echo $timestamp;
?>
Эта функция полезна для вычислений временных интервалов. Например, чтобы определить разницу между двумя событиями, можно вычесть одну метку времени из другой:
$start = strtotime('2025-09-20 08:00:00');
$end = time();
$difference = $end - $start;
echo "Прошло секунд: ".$difference;
Также time() используется для генерации уникальных идентификаторов, временных меток в логах и контроля актуальности кэшированных данных. Для удобного отображения метки времени в человекочитаемом формате применяется date():
echo date('Y-m-d H:i:s', time());
Для работы с будущими или прошлыми датами достаточно прибавлять или вычитать количество секунд. Например, чтобы вычислить дату через неделю:
$nextWeek = time() + 7 * 24 * 60 * 60;
echo date('Y-m-d', $nextWeek);
Использование time() в сочетании с strtotime() и date() позволяет эффективно управлять временем без подключения сторонних библиотек и минимизирует ошибки при расчетах временных интервалов.
Создание объекта DateTime для работы с текущим временем
В PHP объект DateTime обеспечивает точное управление датой и временем. Чтобы получить текущее время, создайте объект без параметров:
$now = new DateTime();
По умолчанию объект использует временную зону, установленную в конфигурации PHP (date.timezone). Для явного указания временной зоны используйте DateTimeZone:
$now = new DateTime('now', new DateTimeZone('Europe/Moscow'));
Для отображения даты и времени применяйте метод format(). Например, для формата ГГГГ-ММ-ДД ЧЧ:ММ:СС:
echo $now->format('Y-m-d H:i:s');
Методы modify() и add() позволяют изменять время прямо в объекте. Пример прибавления 1 часа:
$now->modify('+1 hour');
Для точного сравнения дат используйте оператор diff(), который возвращает объект DateInterval:
$interval = $now->diff(new DateTime('2025-12-31'));
Объект DateTime предпочтителен перед функциями date() и time(), так как он поддерживает временные зоны, вычисления и форматирование без дополнительных преобразований.
Форматирование текущего времени с помощью DateTime::format()

Примеры часто используемых символов:
Y– полный год, например, 2025m– месяц с ведущим нулём, 01–12d– день месяца с ведущим нулём, 01–31H– часы в 24-часовом формате, 00–23i– минуты, 00–59s– секунды, 00–59l– полное название дня недели, например, «Monday»M– сокращённое название месяца, Jan–Dec
Пример использования для текущей даты и времени:
$now = new DateTime();
echo $now->format('Y-m-d H:i:s'); // 2025-09-20 14:35:12
Для отображения более читаемого формата можно комбинировать символы:
echo $now->format('l, d M Y H:i'); // Saturday, 20 Sep 2025 14:35
Советы по работе с DateTime::format():
- Используйте
Y-m-d H:i:sдля стандартных логов и баз данных. - Для пользовательского интерфейса лучше комбинировать текстовые обозначения дня и месяца.
- При форматировании времени с учётом часового пояса сначала установите нужный через
DateTimeZone.
Метод format() универсален и позволяет создавать любые комбинации даты и времени без дополнительных функций.
Установка и использование временной зоны через date_default_timezone_set()
В PHP функция date_default_timezone_set() позволяет явно задавать временную зону для всех операций с датой и временем. Это важно, так как без установки временной зоны функции date() и time() могут использовать значение по умолчанию, заданное в php.ini, что может привести к расхождению времени на сервере и в приложении.
Синтаксис функции прост: date_default_timezone_set('Регион/Город');. Например, для Москвы используется date_default_timezone_set('Europe/Moscow');. После установки все последующие вызовы date(), strtotime() и DateTime будут учитывать указанную зону.
Список поддерживаемых временных зон можно получить с помощью функции timezone_identifiers_list(). Рекомендуется использовать точные идентификаторы вида Continent/City, а не смещения GMT, чтобы избежать ошибок при переходе на летнее время.
Пример использования:
<?php
date_default_timezone_set('Europe/Moscow');
echo date('Y-m-d H:i:s');
?>
Функцию date_default_timezone_set() лучше вызывать один раз в начале скрипта, до любых операций с датой, чтобы избежать непредсказуемого поведения. Для проектов с несколькими временными зонами создаются объекты DateTimeZone и DateTime, но глобальная установка через date_default_timezone_set() остаётся основной практикой для единообразия времени в приложении.
Ошибки при указании неверного идентификатора вызывают предупреждение E_WARNING. Проверку корректности можно выполнять через in_array('Europe/Moscow', timezone_identifiers_list()) перед установкой.
Получение текущего времени в миллисекундах
В PHP для получения текущего времени с точностью до миллисекунд используется функция microtime(). Она возвращает строку вида "микросекунды секунды" по умолчанию. Чтобы получить значение в числовом формате, используйте параметр true:
$milliseconds = microtime(true);
В этом случае переменная $milliseconds содержит время в секундах с дробной частью, где дробная часть отражает миллисекунды. Для перевода в целые миллисекунды достаточно умножить результат на 1000:
$ms = round(microtime(true) * 1000);
Значение $ms – это количество миллисекунд с начала эпохи Unix (1 января 1970 года). Такой подход подходит для таймеров, логирования и замеров производительности.
Если требуется строковое представление с точностью до миллисекунд, можно использовать форматирование через DateTime:
$dt = DateTime::createFromFormat('U.u', microtime(true));
$formatted = $dt->format("Y-m-d H:i:s.u");
Сравнение текущего времени с заранее заданной датой
Для точного сравнения текущего времени с конкретной датой в PHP чаще всего используются функции time() и strtotime(). Они позволяют работать с метками времени в формате UNIX, что упрощает вычисления и сравнения.
Пример базового сравнения:
<?php
$now = time(); // текущее время в формате UNIX
$deadline = strtotime('2025-12-31 23:59:59'); // заранее заданная дата
if ($now < $deadline) {
echo "Срок еще не наступил";
} else {
echo "Срок истек";
}
?>
Рекомендации при сравнении дат:
- Использовать одинаковый часовой пояс для текущего времени и заданной даты. Например,
date_default_timezone_set('Europe/Moscow');. - Для регулярных проверок удобно сохранять дату в формате
Y-m-d H:i:sи конвертировать черезstrtotime(). - Если требуется учитывать только дату без времени, использовать
strtotime('2025-12-31')иdate('Y-m-d')для текущей даты. - При работе с будущими или прошлыми датами полезно вычислять разницу:
$diff = $deadline - $now;и использоватьfloor($diff / 86400)для количества дней.
Для проектов с высокой точностью стоит рассматривать объекты DateTime и DateInterval:
<?php
$now = new DateTime();
$deadline = new DateTime('2025-12-31 23:59:59');
if ($now < $deadline) {
$interval = $now->diff($deadline);
echo "До срока осталось " . $interval->days . " дней";
} else {
echo "Срок истек";
}
?>
Использование DateTime позволяет легко сравнивать даты, учитывать часовые пояса и получать детальную информацию о разнице между датами без дополнительных вычислений вручную.
Вопрос-ответ:
Как получить текущее время в PHP с помощью встроенной функции?
Для получения текущего времени в PHP можно использовать функцию date(). Например, date('Y-m-d H:i:s') вернёт дату и время в формате «год-месяц-день часы:минуты:секунды». Функция автоматически учитывает настройки временной зоны, заданные в PHP или через date_default_timezone_set().
Можно ли использовать PHP для вывода времени с учётом определённого часового пояса?
Да, в PHP есть возможность задать временную зону с помощью date_default_timezone_set('Europe/Moscow'). После этого все функции, возвращающие дату и время, будут учитывать выбранный часовой пояс. Это удобно, если нужно отображать локальное время для пользователей из разных регионов.
Какая разница между функциями time() и date()?
Функция time() возвращает текущий момент в виде количества секунд, прошедших с 1 января 1970 года (так называемый Unix timestamp). Функция date() позволяет преобразовать этот timestamp в читаемый формат даты и времени. Например, date('H:i:s', time()) выведет текущее время.
Как получить время в формате только часы и минуты?
Для этого можно использовать функцию date() с форматом 'H:i'. Пример: echo date('H:i');. Результат будет выглядеть, например, как «14:35». Такой подход полезен, когда нужно отображать только часы и минуты без секунд и даты.
Можно ли хранить текущее время в переменной для дальнейшей обработки?
Да, PHP позволяет сохранять результат функции date() или time() в переменную. Например, $now = date('Y-m-d H:i:s');. После этого переменную можно использовать для записи в базу данных, сравнения с другими датами или вывода пользователю. Это упрощает работу с датой и временем в скриптах.
