DateTimeZone работает с PHP версии 7.0, но не с версией 5.4.

При преобразовании из одного часового пояса в другой следующие коды хорошо работают с PHP v7.0(dev), но выдают ошибку при выполнении в PHP v5.4. Как я могу сделать его совместимым?

//---CODE------------------------------------------------------------
$time_object = new DateTime('2011-04-19 17:45', new DateTimeZone('+0530'));
$time_object->setTimezone(new DateTimeZone('Europe/London'));
$LondonDateTime = $time_object->format('Y-m-d H:i:s');
echo $LondonDateTime;

Ошибка в PHP v5.4

//---ERROR WITH PHP v5.4--------------------------------------
DateTimeZone::__construct(): Unknown or bad timezone (+0530)

person Rishav Anand    schedule 20.06.2016    source источник
comment
проверьте php.net/DateTimeZone.listIdentifiers в обеих версиях.   -  person Marc B    schedule 20.06.2016
comment
Обратите внимание, что +5:30 на самом деле неверный часовой пояс. Если это вообще возможно, вам следует избегать его использования и использовать правильные идентификаторы часового пояса, такие как Asia/Bangkok.   -  person deceze♦    schedule 20.06.2016


Ответы (1)


Все дело в ошибке PHP, которая была исправлена ​​в PHP 5.5.10. Вы должны быть в состоянии использовать этот (по общему признанию довольно уродливый) обходной путь:

DateTime::createFromFormat('O', '+05:30')->getTimezone(); 
person iainn    schedule 20.06.2016