DateTimeZone适用于PHP v7.0但不适用于v5.4

时间:2016-06-20 14:41:05

标签: php php-7

在从一个时区转换到另一个时区时,以下代码适用于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)

1 个答案:

答案 0 :(得分:2)

它归结为this PHP bug,已在PHP 5.5.10中修复。你应该能够使用这个(公认的非常丑陋)的解决方法:

DateTime::createFromFormat('O', '+05:30')->getTimezone();