- abs: documentation ( source)
- array_reverse: documentation ( source)
- array_slice: documentation ( source)
- timezone_version_get: documentation ( source)
- sprintf: documentation ( source)
<?php
function getStandardOffsetFromUTC($timezone)
{
$timezone = new DateTimeZone($timezone);
$transitions = array_slice($timezone->getTransitions(), -3);
foreach (array_reverse($transitions) as $transition)
{
if ($transition['isdst'] == 1) // we are interested in standard offsets only
{
continue;
}
return sprintf('UTC %+03d:%02u', $transition['offset'] / 3600, abs($transition['offset']) % 3600 / 60);
}
return false;
}
echo getStandardOffsetFromUTC('America/Argentina/San_Luis') . "\n";
echo getStandardOffsetFromUTC('Antarctica/Casey') . "\n";
echo getStandardOffsetFromUTC('Antarctica/Davis') . "\n";
echo timezone_version_get(), "\n";