Получить смещение часового пояса для данного местоположения

Возможно ли в PHP получить смещение часового пояса для данного местоположения? Например, когда указано местоположение «Сидней / Австралия», чтобы компенсировать часовой пояс как «+1100». Бонус будет для этой функции учитывать дневную экономию дневного света (т. Е. Он знает о дневном свете и корректирует смещение в соответствии).

Чтобы отобразить локальную дату / время, вы можете использовать следующее, где «Европа / Берлин» будет заменено часовым поясом пользователя.

$date = new DateTime($value); $date->setTimezone(new DateTimeZone('Europe/Berlin')); echo $date->format('Ymd H:i:s'); 

Вы можете использовать класс DateTimeZone .

 <?php $timezone = new DateTimeZone("Australia/Sydney"); $offset = $timezone->getOffset(new DateTime("now")); // Offset in seconds echo ($offset < 0 ? '-' : '+').round($offset/3600).'00'; // prints "+1100" ?> 

Не знаете, почему вам нужно «+1100» (а не десятичное представление), но вы можете использовать это:

 $dt = new DateTime(null, new DateTimeZone('Australia/Sydney')); $offset = $dt->getOffset()/60/60; // 11 $hours = intval($offset); $minutes = str_pad((string)($offset - $hours) * 60, 2, '0', STR_PAD_RIGHT); echo $hours.$minutes; // 1100 

Замените null на '2010-10-01' и вы получите 1000