php set timezone utc

Установка временнОй зоны в PHP

Иногда возникает такая ситуация, что текущее время на сервере не соответствует вашему текущему часовому поясу или часовому поясу региона, на который ориентирован ваш сайт.

Чтобы было понятно, напомню: территориально Россия очень большая, и далеко не всем нужно, чтобы их сайты «жили» по московскому времени. Например, Урал, Сибирь, Дальний восток и т.д.

Серверы большинства популярных российских хостинг-провайдеров размещены на технологических площадках Москвы и Санкт-Петербурга и по-умолочанию настроены, естественно, на московскую временну́ю зону. Сервер не может автоматически подстраиваться под ваше текущее местоположение и переводить системные часы. В связи с чем, работа функций даты и времени на сайте может быть не совсем корректной. Естественно, сейчас речь не идёт о CMS, в которых поправка часового пояса обычно присутствует прямо в интерфейсе администратора.

В первую очередь проверьте текущее состояние с помощью PHP-кода:

Хорошо, если у вас свой сервер и имеется доступ к php.ini, где можно задать нужную временну́ю зону и забыть. Например, таким образом:

Правда, если на сервере размещены несколько проектов, в которых должны поддерживаться различные часовые пояса, тогда лучше этого не делать. В этом случае будет правильнее задать временные зоны только для проектов, где один часовой пояс.

Установка временной зоны на виртуальном хостинге

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

Естественно, Europe/Moscow меняется на необходимый вам часовой пояс. Для территории РФ в PHP поддерживаются следующие временные зоны:

Со списком всех доступных временных зон можно ознакомиться по ссылке или выполнить команду, которая возвратит вам список временных зон, доступных на вашем сервере.

Делаю сайты на Вордпресс с 2008 года, занимаюсь их оптимизацией, беру на поддержку, делюсь опытом в блоге и соцсетях (ссылки ниже, подпишитесь)

Источник

get UTC time in PHP

How can I get UTC/GMT +/- time stamp using PHP’s date() function? For example, if I try

I will get Unix time stamp; but I need to get UTC/GMT time stamp with string GMT/UTC+/-0400 or GMT/UTC+/-1000 based on local timings.

12 Answers 12

A simple gmdate() will suffice

php set timezone utc. Смотреть фото php set timezone utc. Смотреть картинку php set timezone utc. Картинка про php set timezone utc. Фото php set timezone utc

The DateTime __construct() documentation suggests passing «now» as the first parameter when creating a DateTime instance and specifying a timezone to get the current time.

php set timezone utc. Смотреть фото php set timezone utc. Смотреть картинку php set timezone utc. Картинка про php set timezone utc. Фото php set timezone utc

Obtaining UTC date

Obtaining UTC timestamp

The result will not be different even you have date_default_timezone_set on your code.

Other than calling gmdate you can also put this code before your rest of the code:

That will make rest of your date/time related calls to use GMT/UTC timezone.

You can use gmmktime function without arguments to obtain the current UTC timestamp:

gmmktime will only work if your server time is using UTC. For example, my server is set to US/Pacific. the listed function above echos back Pacific time.

with string GMT/UTC +/-0400 or GMT/UTC +/-1000 based on local timings

Your custom format is just missing O to give you the timezone offsets from local time.

Difference to Greenwich time (GMT) in hours Example: +0200

However, for maximized portability/interoperability, I would recommend using the ISO8601 date format c

You can use also gmdate and the timezone offset string will always be +00:00

Источник

Время в 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 млрд. лет. Можно уже сейчас проектировать базы данных с учетом этого факта.

Данная запись опубликована в 14.01.2016 19:51 и размещена в PHP. Вы можете перейти в конец страницы и оставить ваш комментарий.

Антиспам с использованием Javascipt для WordPress, обходимся без Captcha

Функция сложения двух URL

Источник

DateTime::setTimezone

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

Description

Parameters

A DateTimeZone object representing the desired time zone.

Return Values

Returns the DateTime object for method chaining.

Examples

Example #1 DateTime::setTimeZone() example

The above examples will output:

See Also

User Contributed Notes 6 notes

In response to the other comments expressing surprise that changing the timezone does not affect the timestamp:

A UNIX timestamp is defined as the number of seconds that have elapsed since 00:00:00 (UTC), Thursday, 1 January 1970.

So: with respect to UTC. Always.

Calling setTimezone() never changes the actual «absolute», underlying, moment-in-time itself. It only changes the timezone you wish to «view» that moment «from». Consider the following:

The timestamp value represented by the DateTime object is not modified when you set the timezone using this method. Only the timezone, and thus the resulting display formatting, is affected.

This can be seen using the following test code:
= new DateTimeZone ( ‘America/Denver’ );
$ESTTZ = new DateTimeZone ( ‘America/New_York’ );

= new DateTimeZone ( ‘America/Denver’ );
$ESTTZ = new DateTimeZone ( ‘America/New_York’ );

It appears that what forzi at mail333 dot com said is correct.

In any case, other output values from format() seem to be accurate, and the true timestamp is always accessible via getTimestamp().

I found unexpected behaviour when passing a timestamp.
timezone seems to always be GMT+0000 unless setTimezone() is set.

= new DateTimeZone ( ‘America/Denver’ );
$ts = 1336476757 ;

/** Output:
string(8) «GMT+0000»
string(10) «1336476757»
string(3) «MDT»
string(10) «1336476757»
**/

Источник

Класс DateTimeZone

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

Введение

Представление часового пояса.

Обзор классов

Предопределённые константы

Часовые пояса Африки.

DateTimeZone::AMERICA

Часовые пояса Америки.

DateTimeZone::ANTARCTICA

Часовые пояса Антарктики.

DateTimeZone::ARCTIC

Часовые пояса Арктики.

DateTimeZone::ASIA

Часовые пояса Азии.

DateTimeZone::ATLANTIC

Часовые пояса Атлантики.

DateTimeZone::AUSTRALIA

Часовые пояса Австралии.

DateTimeZone::EUROPE

Часовые пояса Европы.

DateTimeZone::INDIAN

Часовые пояса Индии.

DateTimeZone::PACIFIC

Часовые пояса Тихого океана.

DateTimeZone::UTC

DateTimeZone::ALL

DateTimeZone::ALL_WITH_BC

Все часовые пояса, включая обратно совместимые.

DateTimeZone::PER_COUNTRY

Число часовых поясов на страну.

Содержание

User Contributed Notes 2 notes

Seems like a significant differences between php 5.3 and 5.6:

It seems like as of PHP 5.5, creating a new DateTimeZone with a string like ‘EDT’ will cause DateTimeZone::getName() to return ‘EDT’ whereas prior to 5.5 it would convert it would have returned ‘America/New_York’

This is of particular note when using a DateTimeZone object to change the timezone on a DateTime object. Using a DateTimeZone object when set as shown above will cause the conversion to be wrong without throwing any errors.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *