W3docs

gmstrftime()

Что такое функция gmstrftime() в PHP? gmstrftime() форматирует дату и время в часовом поясе UTC/GMT. Узнайте о замене на gmdate() и IntlDateFormatter.

Что такое функция gmstrftime() в PHP?

Функция gmstrftime() форматировала дату и время в виде строки в часовом поясе UTC/GMT, используя %-спецификаторы в стиле strftime(), текст которых мог быть локализован через текущую локаль (заданную с помощью setlocale()). Она работала точно так же, как strftime(), с той разницей, что вывод всегда производился в GMT, а не в местном времени сервера.

Важно: gmstrftime() была устаревшей начиная с PHP 8.1 и удалена в PHP 8.2. В современном PHP она больше не существует, поэтому в новом коде необходимо использовать замену. Остальная часть этой страницы описывает функцию для справки и показывает эквиваленты, которые следует использовать сегодня: gmdate() для фиксированных форматов и IntlDateFormatter для вывода с учётом локали.

На этой странице описаны оригинальная сигнатура и спецификаторы формата, современная замена gmdate(), способ сопоставления старых %-спецификаторов с новыми символами формата, а также правильный способ получения локализованных названий месяцев и дней недели.

Синтаксис

string gmstrftime(string $format, ?int $timestamp = null)
  • $format — строка из %-спецификаторов, описывающих желаемый вывод.
  • $timestamp — необязательный Unix-временн́ой штамп. Если опущен, используется текущее время.

Часто используемые спецификаторы: %Y (4-значный год), %m (месяц, 0112), %d (день, 0131), %H (24-часовой формат, 0023), %M (минуты), %S (секунды), %B (полное название месяца), %A (полное название дня недели).

Современная замена: gmdate()

Поскольку gmstrftime() больше не существует, прямой заменой для фиксированных машинных форматов является gmdate(). Она также выводит время в UTC, но использует символы формата в стиле date() (без %):

php— editable, runs on the server

Это выводит текущую дату и время UTC в формате YYYY-MM-DD HH:MM:SS, например 2026-06-21 08:04:38.

Сопоставление старых спецификаторов с gmdate()

Значениеgmstrftime()gmdate()
4-значный год%YY
Месяц (0112)%mm
День (0131)%dd
Час (0023)%HH
Минута%Mi
Секунда%Ss
Полное название месяца%BF
Полное название дня недели%Al

Таким образом, gmstrftime("%A, %d %B %Y") становится gmdate("l, d F Y").

Форматирование UTC с учётом локали

Единственное, чего не делает gmdate() — это перевод названий месяцев и дней недели на текущую локаль: gmdate() всегда возвращает названия на английском языке. Если вы полагались на gmstrftime() совместно с setlocale() для переведённого вывода (например, названий месяцев на французском), используйте вместо этого IntlDateFormatter из расширения intl:

<?php
$formatter = new IntlDateFormatter(
    'fr_FR',
    IntlDateFormatter::FULL,
    IntlDateFormatter::NONE,
    'UTC'
);
echo $formatter->format(time());
?>

Это выводит полную дату с французскими названиями месяца и дня недели в UTC — современный, безопасный с точки зрения локали эквивалент старого паттерна setlocale() + gmstrftime().

Почему важно форматирование в UTC

Форматирование в UTC (что делали gmstrftime() и теперь gmdate()) полезно всякий раз, когда вы храните или сравниваете временн́ые штампы независимо от часового пояса пользователя. Логирование, ответы API, значения в базе данных и межрегиональное планирование — всё это выигрывает от единой однозначной точки отсчёта. Перевод в местный часовой пояс выполняется только в момент отображения — как правило, с помощью классов DateTime / DateTimeZone.

Заключение

gmstrftime() предоставляла быстрый способ форматирования даты и времени UTC с помощью %-спецификаторов в стиле strftime(), однако была удалена в PHP 8.2. Для фиксированных форматов замените её на gmdate(), используя приведённую выше таблицу для перевода спецификаторов; для перевода названий месяцев и дней недели используйте IntlDateFormatter. Для знакомства со связанными функциями см. strftime(), gmmktime() и общее руководство по дате и времени в PHP.

Практика

Практика
Что делает функция gmstrftime() в PHP?
Что делает функция gmstrftime() в PHP?
Was this page helpful?