Вы можете получить смещение UTC для одного из U(M|P)x
-значений, используя timezones()
.
$offset = timezones('UP1'); // don't know the exact format returned but should be something like 1 or '+01:00'
С этого момента, я думаю, единственный способ - это какое-то настраиваемое отображение между смещением и часовым поясом PHP. Вы можете использовать Etc/GMT(+|-)x
часовые пояса, но проблема в том, что они не содержат никакой информации о DST-переходах.
В целом проблема заключается в том, что смещения UTC фактически отображаются на множество разных часовых поясов, например UP1
( (UTC + 1:00) Берлин, Брюссель, Копенгаген, Мадрид, Париж, Рим ) отображается на Europe/Berlin
, Europe/Brussels
, Europe/Copenhagen
, Europe/Madrid
, Europe/Paris
, Europe/Rome
но также Africa/Luanda
например. В настоящее время все становится произвольно сложным из-за DST-переходов, которые могут быть недоступны в некоторых из этих часовых поясов.
Если вам не нужна вещь DST, сопоставление между возвращаемым значением функции timezones()
и часовыми поясами Etc/GMT(+|-)x
должно быть в порядке, в противном случае вы вообще не можете использовать обработку часового пояса Codeigniter, поскольку отображение не однозначный.