Этот код работает как на моем тестовом компьютере, но не работает. Не уверен, что случилось с установкой, единственная разница - это версия ICU.PHP IntlDateFormatter :: format возвращает пустое значение для часового пояса
<?php
$timeZone = 'Asia/Shanghai';
date_default_timezone_set($timeZone);
echo date("c") . "\n";
$formatter = new IntlDateFormatter('en', IntlDateFormatter::NONE, IntlDateFormatter::NONE, $timeZone, NULL, "yyyy-MM-dd'T'HH:mm:ssxxx");
echo $formatter->format(time()) . "\n";
$formatter = new IntlDateFormatter('en', IntlDateFormatter::NONE, IntlDateFormatter::NONE, $timeZone, NULL, "V X x v O Z z");
echo $formatter->format(time()) . "\n";
Ожидаемый результат (тест установки, PHP 5.6.25, междунар версия 1.1.0, ICU версия 56,1, ICU Data версия 56,1):
2016-09-10T12:42:30+08:00
2016-09-10T12:42:30+08:00
cnsha +08 +08 China Time GMT+8 +0800 GMT+8
Фактический выход (производство, PHP 5.6.25 , междунар версия 1.1.0, ICU версия для 50.1.2 ICU Data 50,1):
2016-09-10T12:43:22+08:00
2016-09-10T12:43:22
GMT+08:00