Это даст вам стандартное смещение (а не в или из DST [в зависимости от времени года]):
function getStandardOffsetUTC($timezone)
{
if($timezone == 'UTC') {
return '';
} else {
$timezone = new DateTimeZone($timezone);
$transitions = array_slice($timezone->getTransitions(), -3, null, true);
foreach (array_reverse($transitions, true) as $transition)
{
if ($transition['isdst'] == 1)
{
continue;
}
return sprintf('UTC %+03d:%02u', $transition['offset'] / 3600, abs($transition['offset']) % 3600 / 60);
}
return false;
}
}
Использование:
echo getStandardOffsetUTC('Europe/Sofia'); // UTC +02:00
Вы можете взглянуть на различия здесь .