<?php class Timezone { public static function timezoneList() { $timezoneIdentifiers = DateTimeZone::listIdentifiers(); $utcTime = new DateTime('now', new DateTimeZone('UTC')); $tempTimezones = []; foreach ($timezoneIdentifiers as $timezoneIdentifier) { $currentTimezone = new DateTimeZone($timezoneIdentifier); $tempTimezones[] = [ 'offset' => (int) $currentTimezone->getOffset($utcTime), 'identifier' => $timezoneIdentifier, ]; } // Sort the array by offset,identifier ascending usort($tempTimezones, function ($a, $b) { return $a['offset'] === $b['offset'] ? strcmp($a['identifier'], $b['identifier']) : $a['offset'] - $b['offset']; }); $timezoneList = []; foreach ($tempTimezones as $tz) { $sign = $tz['offset'] > 0 ? '+' : '-'; $offset = gmdate('H:i', abs($tz['offset'])); $timezoneList[$tz['identifier']] = '(UTC ' . $sign . $offset . ') ' . $tz['identifier']; } return $timezoneList; } }