W3docs

gmdate()

Функция gmdate() в PHP: форматирование даты и времени в UTC/GMT, синтаксис, параметры, символы формата и примеры.

Введение

Функция gmdate() форматирует Unix-метку времени в удобочитаемую строку даты и времени в GMT/UTC, игнорируя настроенный часовой пояс сервера. Это UTC-аналог функции date(): обе принимают одинаковые символы формата, но gmdate() всегда возвращает время по Гринвичу. Это делает её подходящим инструментом, когда требуется независимое от часового пояса значение — для записи в лог, формирования HTTP-заголовка или хранения нормализованной метки времени, которую любой сервер и клиент интерпретирует одинаково.

В этом руководстве описаны синтаксис, параметры, наиболее распространённые символы формата, отличия gmdate() от date(), а также несколько запускаемых примеров.

Синтаксис

gmdate(string $format, ?int $timestamp = null): string

Параметры

  • $format (обязательный) — строка из символов формата, которые заменяются соответствующими значениями даты/времени. Любой символ, не распознанный как спецификатор формата, выводится как есть. Чтобы вывести символ буквально, не интерпретируя его, экранируйте его обратным слешем (например, \T).
  • $timestamp (необязательный) — Unix-метка времени (количество секунд, прошедших с 1 января 1970 года, 00:00:00 UTC). Если не указан или равен null, используется текущее время.

Функция возвращает отформатированную дату/время в виде строки, всегда выраженной в UTC, независимо от date_default_timezone_set() или параметра date.timezone сервера.

Распространённые символы формата

Ниже приведены спецификаторы, которые используются чаще всего. Они идентичны тем, что используются функцией date().

СимволЗначениеПример
Y4-значный год2026
mМесяц, 2 цифры с ведущим нулём06
dДень месяца, 2 цифры04
HЧас в 24-часовом формате (00–23)05
iМинуты (00–59)45
sСекунды (00–59)57
DДень недели, сокращённый текстSun
MМесяц, сокращённый текстMar
TАббревиатура часового поясаGMT
UСекунды с начала эпохи Unix1646372757

Примеры

Пример 1: Вывод текущей даты и времени по GMT/UTC

Без аргумента-метки времени gmdate() форматирует текущий момент в UTC.

php— editable, runs on the server

Пример 2: Форматирование даты и времени с произвольными спецификаторами

Распространённый шаблон — формирование читаемой метки времени в стиле RFC. Поскольку gmdate() работает в UTC, спецификатор T всегда выводит GMT.

php— editable, runs on the server

Пример 3: Форматирование конкретной метки времени

Передайте Unix-метку времени вторым аргументом, чтобы отформатировать фиксированный момент вместо «сейчас».

php— editable, runs on the server

gmdate() vs date()

date() форматирует метку времени с использованием локального часового пояса, настроенного для скрипта, тогда как gmdate() всегда форматирует в UTC. При одинаковой метке времени обе функции возвращают одну и ту же строку только тогда, когда локальный часовой пояс совпадает с UTC.

<?php

date_default_timezone_set('America/New_York');
$timestamp = 1646372757;

echo date('Y-m-d H:i:s', $timestamp);   // 2022-03-04 00:45:57 (local, UTC-5)
echo "\n";
echo gmdate('Y-m-d H:i:s', $timestamp); // 2022-03-04 05:45:57 (UTC)

Используйте gmdate(), когда значение должно быть независимым от часового пояса (логи, HTTP-заголовки Date, ответы API, хранение в базе данных). Используйте date(), когда отображаете время пользователю в его локальном часовом поясе.

Когда использовать gmdate()

  • Стандартизированное логирование — храните метки времени в UTC, чтобы записи с серверов в разных регионах оставались сопоставимыми.
  • HTTP-заголовки и кэширование — заголовки вроде Expires и Last-Modified должны быть выражены в GMT.
  • API и обмен данными — возвращайте UTC, чтобы клиенты могли надёжно конвертировать в любой локальный часовой пояс.

Для полноценной объектно-ориентированной работы с датами и явными преобразованиями часовых поясов предпочтительнее классы DateTime и DateTimeZone. Для построения меток времени, передаваемых в gmdate(), см. gmmktime() (UTC) и mktime() (местное время).

Заключение

Функция gmdate() предоставляет простой способ форматирования дат и времени в UTC, используя те же символы формата, что и date(), но всегда привязанная к GMT. В этом руководстве описаны её синтаксис, параметры, наиболее распространённые символы формата, отличия от date() и практические примеры, которые помогут вам интегрировать её в свои проекты. Подробнее о работе с датами в PHP см. в обзоре PHP Date and Time.

Практика

Практика
Какова цель функции gmdate() в PHP?
Какова цель функции gmdate() в PHP?
Was this page helpful?