Intereting Posts
Чтение и запись PHP в MS WORD Добавьте круглые углы в файл jpeg cms с php-OOP Yii2 – Получение неизвестного свойства: yii \ console \ Application :: user Цифровой знак в PHP с использованием закрытого ключа, проверьте в C # MySQL и NoSQL: помогите выбрать правильный Группировка многомерного массива PHP и вычисление суммы определенного ключа для каждого элемента массива Можно ли использовать аутентификацию в RSS-каналах, используя php? Получить изображение src из ответа ajax Модем переписывается с использованием .htaccess требуется более подробная привязка в Session_start () к выражению select Интеграция поисковой системы Sphider с CodeIgniter Как использовать открытый идентификатор в качестве системы входа в систему загружать библиотеку загружаемого кода из библиотеки? Подключение к удаленной DB2 на i5 / os через php-клиент на Windows-машине с использованием pdo_ibm или ibm_db2 php-расширений

Возможно ли создать DateTimeZone со смещения?

Конструктор DateTimeZone принимает только имя региона:

new DateTimeZone('Europe/London'); 

И не смещение от UTC:

 new DateTimeZone('+01:00'); // Unknown or bad timezone (+01:00) 

Тем не менее, можно получить такой DateTimeZone из DateTime :

 (new DateTime('2012-12-28T00:00:00+01:00'))->getTimezone()->getName(); // +01:00 

Так что это немного странно. Есть ли способ напрямую получить DateTimeZone со смещения?

В дополнение к ответу Рафаля , самый простой способ, который я нашел до сих пор:

 DateTime::createFromFormat('O', '+01:00')->getTimezone(); 

редактировать

Это была ошибка , которая была исправлена ​​в PHP 5.5.10. Теперь это работает!

Проверьте эту функцию.

http://pl1.php.net/manual/en/function.timezone-name-from-abbr.php

Вам нужно будет конвертировать часы в секундах и передать их в качестве второго параметра.

STH. как new DateTimeZone(timezone_name_from_abbr('', 3600, 0)) должен работать.

Я не думаю, что есть предопределенный способ, по которому вы хотите пойти. Но если вы объявите какую-либо глобальную функцию, которая вернет вам дату и время с добавлением смещения, это может вам помочь. Пример :

 function getDateTime($format="dd-mm-YY"){ $currDate= date($format); $currDate=date($format,strtotime("+1 day",$currDate); // or whatever needed instead of +1 day } 

Современный ответ:

 new DateTimeZone('+0100'); 

Документация:

http://php.net/manual/en/datetimezone.construct.php