Gmstrftime: примеры (PHP)
gmstrftime(string $format, ?int $timestamp = null): stringФункция gmstrftime форматирует дату и время по Гринвичу (GMT/UTC) в соответствии с установленной локалью. Она применяется для отображения временных меток в форматах, учитывающих языковые и региональные настройки.
Функция принимает два параметра:
- format - строка формата, содержащая спецификаторы преобразования (начинающиеся с %).
- timestamp - необязательный параметр, целочисленная метка времени Unix. По умолчанию используется текущее время.
Спецификаторы формата включают:
- %a, %A - сокращенное и полное название дня недели.
- %b, %B - сокращенное и полное название месяца.
- %d - день месяца (01-31).
- %H - час в 24-часовом формате (00-23).
- %I - час в 12-часовом формате (01-12).
- %m - месяц (01-12).
- %M - минуты (00-59).
- %p - обозначение AM/PM.
- %S - секунды (00-59).
- %y, %Y - год без века (00-99) и с веком.
- %Z - временная зона (всегда GMT для gmstrftime).
Пример с использованием текущего времени:
<?
setlocale(LC_TIME, 'ru_RU.UTF-8');
echo gmstrftime('%d %B %Y, %H:%M');
?>
27 января 2024, 14:30
Пример с заданной меткой времени:
<?
setlocale(LC_TIME, 'ru_RU.UTF-8');
echo gmstrftime('%A, %d %b %Y', 1609459200);
?>
среда, 31 дек 2020
Пример с разными спецификаторами:
<?
setlocale(LC_TIME, 'en_US.UTF-8');
echo gmstrftime('Today is %A, %B %d. Time: %I:%M %p', time());
?>
Today is Thursday, January 27. Time: 02:30 PM
Функция strftime выполняет аналогичное форматирование, но использует локальное время сервера, а не GMT. Её применение предпочтительно для отображения времени пользователя в его часовом поясе.
Функции date и DateTime::format предоставляют форматирование без учета локали, но с поддержкой часовых поясов через объект DateTime. Они рекомендуются для новых проектов, так как strftime и gmstrftime устарели в PHP 8.1.
Класс IntlDateFormatter из расширения Intl предлагает наиболее полную интернационализацию работы с датами.
Отсутствие установленной локали приводит к выводу на английском языке или некорректным символам:
<?
// Локаль не установлена
echo gmstrftime('%B');
?>
January
Использование несуществующей метки времени:
<?
echo gmstrftime('%Y', -10000000000);
?>
Возвращает пустую строку или ложное значение
Неправильный спецификатор формата:
<?
echo gmstrftime('%Q'); // Неподдерживаемый спецификатор
?>
%Q
Начиная с PHP 8.1.0, функции gmstrftime и strftime считаются устаревшими. Их использование вызывает предупреждение уровня E_DEPRECATED. В будущих версиях PHP эти функции будут удалены.
Рекомендуется переходить на использование класса IntlDateFormatter или методов объекта DateTime с date_format.
Форматирование интернациональных дат с разными локалями:
<?
$timestamp = 1674825600;
$locales = ['ru_RU.UTF-8', 'fr_FR.UTF-8', 'ja_JP.UTF-8'];
foreach ($locales as $locale) {
setlocale(LC_TIME, $locale);
echo gmstrftime('%A, %d %B %Y', $timestamp), "\n";
}
?>
воскресенье, 27 января 2024 dimanche, 27 janvier 2024 日曜日, 27 1月 2024
Создание пользовательского формата с несколькими спецификаторами:
<?
setlocale(LC_TIME, 'de_DE.UTF-8');
echo gmstrftime('Woche %V, Jahr %Y, Tag im Jahr: %j', time());
?>
Woche 04, Jahr 2024, Tag im Jahr: 027
Использование с фиксированной меткой времени для отображения исторических дат:
<?
setlocale(LC_TIME, 'en_US.UTF-8');
$apollo11 = -14159040;
echo gmstrftime('Apollo 11 landing: %B %d, %Y at %H:%M:%S UTC', $apollo11);
?>
Apollo 11 landing: July 20, 1969 at 20:17:40 UTC
Комбинирование с другими функциями для вычисления интервалов:
<?
setlocale(LC_TIME, 'ru_RU.UTF-8');
$start = time();
$end = $start + 86400 * 7;
echo 'С ', gmstrftime('%d %B', $start), ' по ', gmstrftime('%d %B %Y', $end);
?>
С 27 января по 03 февраля 2024
Gmstrftime в Python
Модуль time содержит функцию gmtime вместе с strftime:
import time
print(time.strftime('%d %B %Y', time.gmtime()))
27 January 2024
Gmstrftime в Javascript
Метод toUTCString объекта Date или Intl.DateTimeFormat с указанием часового пояса UTC:
console.log(new Date().toUTCString());
// или
console.log(new Intl.DateTimeFormat('en-US', { timeZone: 'UTC', dateStyle: 'full' }).format(new Date()));
Thu, 27 Jan 2024 14:30:00 GMT
Gmstrftime в MySQL
Функция UTC_TIMESTAMP вместе с DATE_FORMAT:
SELECT DATE_FORMAT(UTC_TIMESTAMP(), '%W, %d %M %Y');
Thursday, 27 January 2024