Create a dateTime object for each timezone. Format the time with 'P' format.
class Time_zone {
private $regions = array(
'Africa' => DateTimeZone::AFRICA,
'America' => DateTimeZone::AMERICA,
'Antarctica' => DateTimeZone::ANTARCTICA,
'Artic' => DateTimeZone::ARCTIC,
'Asia' => DateTimeZone::ASIA,
'Atlantic' => DateTimeZone::ATLANTIC,
'Australia' => DateTimeZone::AUSTRALIA,
'Europe' => DateTimeZone::EUROPE,
'Indian' => DateTimeZone::INDIAN,
'Pacific' => DateTimeZone::PACIFIC
);
public function generate_list() {
$time_zones = array();
foreach ($this->regions as $name => $mask) {
$time_zones[$name] = DateTimeZone::listIdentifiers($mask);
}
foreach ($time_zones as &$zones) {
foreach ($zones as &$zstr) {
$zn = new DateTimeZone($zstr);
$t = new DateTime('now', $zn);
$offset = $t->format('P');
$zstr = "[UTC/GMT $offset] $zstr";
}
}
return $time_zones;
}
}