Время в PHP, смещение от GMT, UTC

Для начала разберемся что такое GMT и UTC.  Во многих источниках они упоминаются как синонимы, и между ними действительно не существенная разница (до 1 секунды).

Их отличие в методике получения точного значения. UTC (универсальное координированное время) измеряется благодаря высокоточным атомным часам. GMT (Время гринвичского или нулевого меридиана) получают благодаря астрономическим расчетам. При этом UTC периодически подгоняют, чтобы расхождение с GMT составляло не более секунды.

Для бытовых целей это расхождение не важно и потому UTC и GMT можно использовать как одно и тоже число.

Время, используемое в PHP

Речь идет о функции time(). Она возвращает так называемый UNIX_TIMESTAMP, время в секундах с 1 Января 1970 года.

Какое время возвращает PHP «по умолчанию»? Для какого часового пояса? Установка по умолчанию часового пояса выполняется в файле php.ini. Например, здесь установлен часовой пояс Лос Анджелеса:

Но если настройки не менялись после установки PHP, то обычно вы там обнаружите UTC, что соответствует часовому поясу GMT:

В программе, вы можете установить нужный вам часовой пояс.

Это можно сделать вот так:

или так:

Если используется второй способ, то он устанавливает приоритетное значение часового пояса для функций времени в PHP.

Функция time(), показывает время именно для того часового пояса, который установлен в текущий момент в настройках или date_default_timezone_set().

Как узнать разницу времени между локальным часовым поясом и GMT?

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

Т.е. ключи выводят

Z — разницу в секундах, при этом пояса западнее GMT дают отрицательные значения, а восточнее — положительные;
e — идентификатор часового пояса (появился в PHP 5.1);
P — разница с GMT в часах и минутах (появился в PHP 5.1.3),
T — аббревиатура часового пояса.

Есть и другие ключи, все они перечислены в документации функции date().

Кстати, через 22 года (19 января 2038) для хранения времени в таком формате уже не будет хватать 32 битного целого числа со знаком. Вполне возможно, что 32 битных приложений уже к тому времени не останется, так что проблемы переполнения не возникнет. 64х-битной переменной уже должно хватить на 292 млрд. лет. Можно уже сейчас проектировать базы данных с учетом этого факта.

Написать комментарий

Мало букафф? Читайте есчо !

Восстанавливаем объект из состояния __PHP_Incomplete_Class_Name

Декабрь 13, 2014 г.

Объект класса "__PHP_Incomplete_Class" с дополнительным свойством __PHP_Incomplete_Class_Name => 'имя класса' появляется, когда PHP не удается найти объявление класса при операции десериализации объекта. К примеру, такое может происходить при хранении ...

Читать

Обмен данных Angular с бек-энд на PHP

Ноябрь 11, 2016 г.

Стоит ли рассказывать, что Ангуляр при всей своей прелести лишь одна сторона медали - frontend, который как то должен взаимодействовать со второй половинкой ...

Читать

 

Комментарии к «Время в PHP, смещение от GMT, UTC»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Один комментарий в “Время в PHP, смещение от GMT, UTC”

  1. Грузовые шины:

    Когда отображаете время, всегда включайте в него смещение часового пояса. Формат времени без смещения бесполезен.