php - santiago - timezone laravel
Lista de huso horario de PHP (9)
Estoy buscando una forma de generar una lista de zonas horarias para mostrar en una <select>
Generar una lista desplegable de zonas horarias con PHP
$list = DateTimeZone::listAbbreviations();
$idents = DateTimeZone::listIdentifiers();
$data = $offset = $added = array();
foreach ($list as $abbr => $info) {
foreach ($info as $zone) {
if ( ! empty($zone[''timezone_id''])
AND
! in_array($zone[''timezone_id''], $added)
AND
in_array($zone[''timezone_id''], $idents)) {
$z = new DateTimeZone($zone[''timezone_id'']);
$c = new DateTime(null, $z);
$zone[''time''] = $c->format(''H:i a'');
$data[] = $zone;
$offset[] = $z->getOffset($c);
$added[] = $zone[''timezone_id''];
}
}
}
array_multisort($offset, SORT_ASC, $data);
$options = array();
foreach ($data as $key => $row) {
$options[$row[''timezone_id'']] = $row[''time''] . '' - ''
. formatOffset($row[''offset''])
. '' '' . $row[''timezone_id''];
}
// now you can use $options;
function formatOffset($offset) {
$hours = $offset / 3600;
$remainder = $offset % 3600;
$sign = $hours > 0 ? ''+'' : ''-'';
$hour = (int) abs($hours);
$minutes = (int) abs($remainder / 60);
if ($hour == 0 AND $minutes == 0) {
$sign = '' '';
}
return ''GMT'' . $sign . str_pad($hour, 2, ''0'', STR_PAD_LEFT)
.'':''. str_pad($minutes,2, ''0'');
}
Cuando revisé mi país, el desplazamiento fue incorrecto, estoy en Asia / Singapur, debería ser UTC / GMT +8 http://www.timeanddate.com/worldclock/city.html?n=236 pero de acuerdo con la generación lista su +9. ¿Hay algún tipo de error de lógica? El tiempo era correcto aunque
¿Hay una mejor manera de generar esta lista? de la misma pregunta en el enlace de arriba,
static $regions = array(
''Africa'' => DateTimeZone::AFRICA,
''America'' => DateTimeZone::AMERICA,
''Antarctica'' => DateTimeZone::ANTARCTICA,
''Aisa'' => DateTimeZone::ASIA,
''Atlantic'' => DateTimeZone::ATLANTIC,
''Europe'' => DateTimeZone::EUROPE,
''Indian'' => DateTimeZone::INDIAN,
''Pacific'' => DateTimeZone::PACIFIC
);
foreach ($regions as $name => $mask) {
$tzlist[] = DateTimeZone::listIdentifiers($mask);
}
Esto acaba de obtener los identificadores Quiero un nombre de visualización amigable, por ejemplo. UTC + 8 Asia / Singapur o algo similar. ¿Cómo puedo obtener eso?
Acabo de tener el mismo problema de hacer una lista de zona horaria fácil de usar. Así que estoy usando geoip (http://freegeoip.net) para obtener el país del usuario y luego usar:
$nearest_time_zones = DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, $country_code);
Esto es genial porque la lista es generalmente muy corta. Pero en caso de que el usuario quiera especificar una zona diferente, anexaré toda la lista desde DateTimeZone :: listIdentifiers (). Si no muestra todas las zonas horarias, está obligado a tener un usuario de una zona horaria que no está en la lista.
El menú desplegable resultante se ve así (por supuesto, es mucho más que esto):
<optgroup label="Nearest">
<option value="blah/blah">(+5:00) Blah/Blah</option>
...
</optgroup>
<optgroup label="-11:00">
<option value="Pacific/Apia">(-11:00) Pacific/Apia</option>
<option value="Pacific/Midway">(-11:00) Pacific/Midway</option>
<option value="Pacific/Niue">(-11:00) Pacific/Niue</option>
<option value="Pacific/Pago_Pago">(-11:00) Pacific/Pago_Pago</option>
</optgroup>
<optgroup label="-10:00">
<option value="America/Adak">(-10:00) America/Adak</option>
<option value="Pacific/Fakaofo">(-10:00) Pacific/Fakaofo</option>
<option value="Pacific/Honolulu">(-10:00) Pacific/Honolulu</option>
<option value="Pacific/Johnston">(-10:00) Pacific/Johnston</option>
<option value="Pacific/Rarotonga">(-10:00) Pacific/Rarotonga</option>
<option value="Pacific/Tahiti">(-10:00) Pacific/Tahiti</option>
</optgroup>
Esta aplicación todavía está en desarrollo y todavía no ha recibido comentarios de los usuarios, por lo que no puedo decir que este haya sido un enfoque exitoso. Pero pensé que valía la pena mencionar el enfoque geoparque.
Esta es la solución que encuentro mejor que una matriz codificada, porque las compensaciones se calculan dinámicamente.
<?php
function toGmtOffset($timezone){
$userTimeZone = new DateTimeZone($timezone);
$offset = $userTimeZone->getOffset(new DateTime("now",new DateTimeZone(''GMT''))); // Offset in seconds
$seconds = abs($offset);
$sign = $offset > 0 ? ''+'' : ''-'';
$hours = floor($seconds / 3600);
$mins = floor($seconds / 60 % 60);
$secs = floor($seconds % 60);
return sprintf("(GMT$sign%02d:%02d)", $hours, $mins, $secs);
}
$timezones = array(
''Pacific/Midway'' => toGmtOffset(''Pacific/Midway'' ). " Midway Island",
''US/Samoa'' => toGmtOffset(''US/Samoa'' ). " Samoa",
''US/Hawaii'' => toGmtOffset(''US/Hawaii'' ). " Hawaii",
''US/Alaska'' => toGmtOffset(''US/Alaska'' ). " Alaska",
''US/Pacific'' => toGmtOffset(''US/Pacific'' ). " Pacific Time (US & Canada)",
''America/Tijuana'' => toGmtOffset(''America/Tijuana'' ). " Tijuana",
''US/Arizona'' => toGmtOffset(''US/Arizona'' ). " Arizona",
''US/Mountain'' => toGmtOffset(''US/Mountain'' ). " Mountain Time (US & Canada)",
''America/Chihuahua'' => toGmtOffset(''America/Chihuahua'' ). " Chihuahua",
''America/Mazatlan'' => toGmtOffset(''America/Mazatlan'' ). " Mazatlan",
''America/Mexico_City'' => toGmtOffset(''America/Mexico_City'' ). " Mexico City",
''America/Monterrey'' => toGmtOffset(''America/Monterrey'' ). " Monterrey",
''Canada/Saskatchewan'' => toGmtOffset(''Canada/Saskatchewan'' ). " Saskatchewan",
''US/Central'' => toGmtOffset(''US/Central'' ). " Central Time (US & Canada)",
''US/Eastern'' => toGmtOffset(''US/Eastern'' ). " Eastern Time (US & Canada)",
''US/East-Indiana'' => toGmtOffset(''US/East-Indiana'' ). " Indiana (East)",
''America/Bogota'' => toGmtOffset(''America/Bogota'' ). " Bogota",
''America/Lima'' => toGmtOffset(''America/Lima'' ). " Lima",
''America/Caracas'' => toGmtOffset(''America/Caracas'' ). " Caracas",
''Canada/Atlantic'' => toGmtOffset(''Canada/Atlantic'' ). " Atlantic Time (Canada)",
''America/La_Paz'' => toGmtOffset(''America/La_Paz'' ). " La Paz",
''America/Santiago'' => toGmtOffset(''America/Santiago'' ). " Santiago",
''Canada/Newfoundland'' => toGmtOffset(''Canada/Newfoundland'' ). " Newfoundland",
''America/Buenos_Aires'' => toGmtOffset(''America/Buenos_Aires'' ). " Buenos Aires",
''Atlantic/Stanley'' => toGmtOffset(''Atlantic/Stanley'' ). " Stanley",
''Atlantic/Azores'' => toGmtOffset(''Atlantic/Azores'' ). " Azores",
''Atlantic/Cape_Verde'' => toGmtOffset(''Atlantic/Cape_Verde'' ). " Cape Verde Is.",
''Africa/Casablanca'' => toGmtOffset(''Africa/Casablanca'' ). " Casablanca",
''Europe/Dublin'' => toGmtOffset(''Europe/Dublin'' ). " Dublin",
''Europe/Lisbon'' => toGmtOffset(''Europe/Lisbon'' ). " Lisbon",
''Europe/London'' => toGmtOffset(''Europe/London'' ). " London",
''Africa/Monrovia'' => toGmtOffset(''Africa/Monrovia'' ). " Monrovia",
''Europe/Amsterdam'' => toGmtOffset(''Europe/Amsterdam'' ). " Amsterdam",
''Europe/Belgrade'' => toGmtOffset(''Europe/Belgrade'' ). " Belgrade",
''Europe/Berlin'' => toGmtOffset(''Europe/Berlin'' ). " Berlin",
''Europe/Bratislava'' => toGmtOffset(''Europe/Bratislava'' ). " Bratislava",
''Europe/Brussels'' => toGmtOffset(''Europe/Brussels'' ). " Brussels",
''Europe/Budapest'' => toGmtOffset(''Europe/Budapest'' ). " Budapest",
''Europe/Copenhagen'' => toGmtOffset(''Europe/Copenhagen'' ). " Copenhagen",
''Europe/Ljubljana'' => toGmtOffset(''Europe/Ljubljana'' ). " Ljubljana",
''Europe/Madrid'' => toGmtOffset(''Europe/Madrid'' ). " Madrid",
''Europe/Paris'' => toGmtOffset(''Europe/Paris'' ). " Paris",
''Europe/Prague'' => toGmtOffset(''Europe/Prague'' ). " Prague",
''Europe/Rome'' => toGmtOffset(''Europe/Rome'' ). " Rome",
''Europe/Sarajevo'' => toGmtOffset(''Europe/Sarajevo'' ). " Sarajevo",
''Europe/Skopje'' => toGmtOffset(''Europe/Skopje'' ). " Skopje",
''Europe/Stockholm'' => toGmtOffset(''Europe/Stockholm'' ). " Stockholm",
''Europe/Vienna'' => toGmtOffset(''Europe/Vienna'' ). " Vienna",
''Europe/Warsaw'' => toGmtOffset(''Europe/Warsaw'' ). " Warsaw",
''Europe/Zagreb'' => toGmtOffset(''Europe/Zagreb'' ). " Zagreb",
''Europe/Athens'' => toGmtOffset(''Europe/Athens'' ). " Athens",
''Europe/Bucharest'' => toGmtOffset(''Europe/Bucharest'' ). " Bucharest",
''Africa/Cairo'' => toGmtOffset(''Africa/Cairo'' ). " Cairo",
''Africa/Harare'' => toGmtOffset(''Africa/Harare'' ). " Harare",
''Europe/Helsinki'' => toGmtOffset(''Europe/Helsinki'' ). " Helsinki",
''Europe/Istanbul'' => toGmtOffset(''Europe/Istanbul'' ). " Istanbul",
''Asia/Jerusalem'' => toGmtOffset(''Asia/Jerusalem'' ). " Jerusalem",
''Europe/Kiev'' => toGmtOffset(''Europe/Kiev'' ). " Kyiv",
''Europe/Minsk'' => toGmtOffset(''Europe/Minsk'' ). " Minsk",
''Europe/Riga'' => toGmtOffset(''Europe/Riga'' ). " Riga",
''Europe/Sofia'' => toGmtOffset(''Europe/Sofia'' ). " Sofia",
''Europe/Tallinn'' => toGmtOffset(''Europe/Tallinn'' ). " Tallinn",
''Europe/Vilnius'' => toGmtOffset(''Europe/Vilnius'' ). " Vilnius",
''Asia/Baghdad'' => toGmtOffset(''Asia/Baghdad'' ). " Baghdad",
''Asia/Kuwait'' => toGmtOffset(''Asia/Kuwait'' ). " Kuwait",
''Africa/Nairobi'' => toGmtOffset(''Africa/Nairobi'' ). " Nairobi",
''Asia/Riyadh'' => toGmtOffset(''Asia/Riyadh'' ). " Riyadh",
''Europe/Moscow'' => toGmtOffset(''Europe/Moscow'' ). " Moscow",
''Asia/Tehran'' => toGmtOffset(''Asia/Tehran'' ). " Tehran",
''Asia/Baku'' => toGmtOffset(''Asia/Baku'' ). " Baku",
''Europe/Volgograd'' => toGmtOffset(''Europe/Volgograd'' ). " Volgograd",
''Asia/Muscat'' => toGmtOffset(''Asia/Muscat'' ). " Muscat",
''Asia/Tbilisi'' => toGmtOffset(''Asia/Tbilisi'' ). " Tbilisi",
''Asia/Yerevan'' => toGmtOffset(''Asia/Yerevan'' ). " Yerevan",
''Asia/Kabul'' => toGmtOffset(''Asia/Kabul'' ). " Kabul",
''Asia/Karachi'' => toGmtOffset(''Asia/Karachi'' ). " Karachi",
''Asia/Tashkent'' => toGmtOffset(''Asia/Tashkent'' ). " Tashkent",
''Asia/Kolkata'' => toGmtOffset(''Asia/Kolkata'' ). " Kolkata",
''Asia/Kathmandu'' => toGmtOffset(''Asia/Kathmandu'' ). " Kathmandu",
''Asia/Yekaterinburg'' => toGmtOffset(''Asia/Yekaterinburg'' ). " Ekaterinburg",
''Asia/Almaty'' => toGmtOffset(''Asia/Almaty'' ). " Almaty",
''Asia/Dhaka'' => toGmtOffset(''Asia/Dhaka'' ). " Dhaka",
''Asia/Novosibirsk'' => toGmtOffset(''Asia/Novosibirsk'' ). " Novosibirsk",
''Asia/Bangkok'' => toGmtOffset(''Asia/Bangkok'' ). " Bangkok",
''Asia/Jakarta'' => toGmtOffset(''Asia/Jakarta'' ). " Jakarta",
''Asia/Krasnoyarsk'' => toGmtOffset(''Asia/Krasnoyarsk'' ). " Krasnoyarsk",
''Asia/Chongqing'' => toGmtOffset(''Asia/Chongqing'' ). " Chongqing",
''Asia/Hong_Kong'' => toGmtOffset(''Asia/Hong_Kong'' ). " Hong Kong",
''Asia/Kuala_Lumpur'' => toGmtOffset(''Asia/Kuala_Lumpur'' ). " Kuala Lumpur",
''Australia/Perth'' => toGmtOffset(''Australia/Perth'' ). " Perth",
''Asia/Singapore'' => toGmtOffset(''Asia/Singapore'' ). " Singapore",
''Asia/Taipei'' => toGmtOffset(''Asia/Taipei'' ). " Taipei",
''Asia/Ulaanbaatar'' => toGmtOffset(''Asia/Ulaanbaatar'' ). " Ulaan Bataar",
''Asia/Urumqi'' => toGmtOffset(''Asia/Urumqi'' ). " Urumqi",
''Asia/Irkutsk'' => toGmtOffset(''Asia/Irkutsk'' ). " Irkutsk",
''Asia/Seoul'' => toGmtOffset(''Asia/Seoul'' ). " Seoul",
''Asia/Tokyo'' => toGmtOffset(''Asia/Tokyo'' ). " Tokyo",
''Australia/Adelaide'' => toGmtOffset(''Australia/Adelaide'' ). " Adelaide",
''Australia/Darwin'' => toGmtOffset(''Australia/Darwin'' ). " Darwin",
''Asia/Yakutsk'' => toGmtOffset(''Asia/Yakutsk'' ). " Yakutsk",
''Australia/Brisbane'' => toGmtOffset(''Australia/Brisbane'' ). " Brisbane",
''Australia/Canberra'' => toGmtOffset(''Australia/Canberra'' ). " Canberra",
''Pacific/Guam'' => toGmtOffset(''Pacific/Guam'' ). " Guam",
''Australia/Hobart'' => toGmtOffset(''Australia/Hobart'' ). " Hobart",
''Australia/Melbourne'' => toGmtOffset(''Australia/Melbourne'' ). " Melbourne",
''Pacific/Port_Moresby'' => toGmtOffset(''Pacific/Port_Moresby'' ). " Port Moresby",
''Australia/Sydney'' => toGmtOffset(''Australia/Sydney'' ). " Sydney",
''Asia/Vladivostok'' => toGmtOffset(''Asia/Vladivostok'' ). " Vladivostok",
''Asia/Magadan'' => toGmtOffset(''Asia/Magadan'' ). " Magadan",
''Pacific/Auckland'' => toGmtOffset(''Pacific/Auckland'' ). " Auckland",
''Pacific/Fiji'' => toGmtOffset(''Pacific/Fiji'' ). " Fiji",
);
Pruebe el siguiente código de ¿Cómo obtengo la hora media de Greenwich en PHP? . Lo uso en una de mis aplicaciones, pero puede cambiar el marcado para mostrar lo que desee:
public function tz_list() {
$zones_array = array();
$timestamp = time();
foreach(timezone_identifiers_list() as $key => $zone) {
date_default_timezone_set($zone);
$zones_array[$key][''zone''] = $zone;
$zones_array[$key][''offset''] = (int) ((int) date(''O'', $timestamp))/100;
$zones_array[$key][''diff_from_GMT''] = ''UTC/GMT '' . date(''P'', $timestamp);
}
return $zones_array;
}
Entonces:
<select name="timezone" id="timezone" class="form-control">
<option value="">Select a time zone</option>
<?php foreach(tz_list() as $t) { ?>
<option value="<?php echo $t[''offset'']; ?>___<?php echo $t[''zone'']; ?>"
<?php echo $t[''diff_from_GMT''] . '' - '' . $t[''zone'']; ?></option>
<?php } ?>
</select>
Toma mi conjunto de zonas horarias, que hice especialmente para el elemento seleccionado. Es una matriz asociada donde la clave es la zona horaria de PHP y el valor es la representación humana. Eso es todo:
$timezones = array(
''Pacific/Midway'' => "(GMT-11:00) Midway Island",
''US/Samoa'' => "(GMT-11:00) Samoa",
''US/Hawaii'' => "(GMT-10:00) Hawaii",
''US/Alaska'' => "(GMT-09:00) Alaska",
''US/Pacific'' => "(GMT-08:00) Pacific Time (US & Canada)",
''America/Tijuana'' => "(GMT-08:00) Tijuana",
''US/Arizona'' => "(GMT-07:00) Arizona",
''US/Mountain'' => "(GMT-07:00) Mountain Time (US & Canada)",
''America/Chihuahua'' => "(GMT-07:00) Chihuahua",
''America/Mazatlan'' => "(GMT-07:00) Mazatlan",
''America/Mexico_City'' => "(GMT-06:00) Mexico City",
''America/Monterrey'' => "(GMT-06:00) Monterrey",
''Canada/Saskatchewan'' => "(GMT-06:00) Saskatchewan",
''US/Central'' => "(GMT-06:00) Central Time (US & Canada)",
''US/Eastern'' => "(GMT-05:00) Eastern Time (US & Canada)",
''US/East-Indiana'' => "(GMT-05:00) Indiana (East)",
''America/Bogota'' => "(GMT-05:00) Bogota",
''America/Lima'' => "(GMT-05:00) Lima",
''America/Caracas'' => "(GMT-04:30) Caracas",
''Canada/Atlantic'' => "(GMT-04:00) Atlantic Time (Canada)",
''America/La_Paz'' => "(GMT-04:00) La Paz",
''America/Santiago'' => "(GMT-04:00) Santiago",
''Canada/Newfoundland'' => "(GMT-03:30) Newfoundland",
''America/Buenos_Aires'' => "(GMT-03:00) Buenos Aires",
''Greenland'' => "(GMT-03:00) Greenland",
''Atlantic/Stanley'' => "(GMT-02:00) Stanley",
''Atlantic/Azores'' => "(GMT-01:00) Azores",
''Atlantic/Cape_Verde'' => "(GMT-01:00) Cape Verde Is.",
''Africa/Casablanca'' => "(GMT) Casablanca",
''Europe/Dublin'' => "(GMT) Dublin",
''Europe/Lisbon'' => "(GMT) Lisbon",
''Europe/London'' => "(GMT) London",
''Africa/Monrovia'' => "(GMT) Monrovia",
''Europe/Amsterdam'' => "(GMT+01:00) Amsterdam",
''Europe/Belgrade'' => "(GMT+01:00) Belgrade",
''Europe/Berlin'' => "(GMT+01:00) Berlin",
''Europe/Bratislava'' => "(GMT+01:00) Bratislava",
''Europe/Brussels'' => "(GMT+01:00) Brussels",
''Europe/Budapest'' => "(GMT+01:00) Budapest",
''Europe/Copenhagen'' => "(GMT+01:00) Copenhagen",
''Europe/Ljubljana'' => "(GMT+01:00) Ljubljana",
''Europe/Madrid'' => "(GMT+01:00) Madrid",
''Europe/Paris'' => "(GMT+01:00) Paris",
''Europe/Prague'' => "(GMT+01:00) Prague",
''Europe/Rome'' => "(GMT+01:00) Rome",
''Europe/Sarajevo'' => "(GMT+01:00) Sarajevo",
''Europe/Skopje'' => "(GMT+01:00) Skopje",
''Europe/Stockholm'' => "(GMT+01:00) Stockholm",
''Europe/Vienna'' => "(GMT+01:00) Vienna",
''Europe/Warsaw'' => "(GMT+01:00) Warsaw",
''Europe/Zagreb'' => "(GMT+01:00) Zagreb",
''Europe/Athens'' => "(GMT+02:00) Athens",
''Europe/Bucharest'' => "(GMT+02:00) Bucharest",
''Africa/Cairo'' => "(GMT+02:00) Cairo",
''Africa/Harare'' => "(GMT+02:00) Harare",
''Europe/Helsinki'' => "(GMT+02:00) Helsinki",
''Europe/Istanbul'' => "(GMT+02:00) Istanbul",
''Asia/Jerusalem'' => "(GMT+02:00) Jerusalem",
''Europe/Kiev'' => "(GMT+02:00) Kyiv",
''Europe/Minsk'' => "(GMT+02:00) Minsk",
''Europe/Riga'' => "(GMT+02:00) Riga",
''Europe/Sofia'' => "(GMT+02:00) Sofia",
''Europe/Tallinn'' => "(GMT+02:00) Tallinn",
''Europe/Vilnius'' => "(GMT+02:00) Vilnius",
''Asia/Baghdad'' => "(GMT+03:00) Baghdad",
''Asia/Kuwait'' => "(GMT+03:00) Kuwait",
''Africa/Nairobi'' => "(GMT+03:00) Nairobi",
''Asia/Riyadh'' => "(GMT+03:00) Riyadh",
''Europe/Moscow'' => "(GMT+03:00) Moscow",
''Asia/Tehran'' => "(GMT+03:30) Tehran",
''Asia/Baku'' => "(GMT+04:00) Baku",
''Europe/Volgograd'' => "(GMT+04:00) Volgograd",
''Asia/Muscat'' => "(GMT+04:00) Muscat",
''Asia/Tbilisi'' => "(GMT+04:00) Tbilisi",
''Asia/Yerevan'' => "(GMT+04:00) Yerevan",
''Asia/Kabul'' => "(GMT+04:30) Kabul",
''Asia/Karachi'' => "(GMT+05:00) Karachi",
''Asia/Tashkent'' => "(GMT+05:00) Tashkent",
''Asia/Kolkata'' => "(GMT+05:30) Kolkata",
''Asia/Kathmandu'' => "(GMT+05:45) Kathmandu",
''Asia/Yekaterinburg'' => "(GMT+06:00) Ekaterinburg",
''Asia/Almaty'' => "(GMT+06:00) Almaty",
''Asia/Dhaka'' => "(GMT+06:00) Dhaka",
''Asia/Novosibirsk'' => "(GMT+07:00) Novosibirsk",
''Asia/Bangkok'' => "(GMT+07:00) Bangkok",
''Asia/Jakarta'' => "(GMT+07:00) Jakarta",
''Asia/Krasnoyarsk'' => "(GMT+08:00) Krasnoyarsk",
''Asia/Chongqing'' => "(GMT+08:00) Chongqing",
''Asia/Hong_Kong'' => "(GMT+08:00) Hong Kong",
''Asia/Kuala_Lumpur'' => "(GMT+08:00) Kuala Lumpur",
''Australia/Perth'' => "(GMT+08:00) Perth",
''Asia/Singapore'' => "(GMT+08:00) Singapore",
''Asia/Taipei'' => "(GMT+08:00) Taipei",
''Asia/Ulaanbaatar'' => "(GMT+08:00) Ulaan Bataar",
''Asia/Urumqi'' => "(GMT+08:00) Urumqi",
''Asia/Irkutsk'' => "(GMT+09:00) Irkutsk",
''Asia/Seoul'' => "(GMT+09:00) Seoul",
''Asia/Tokyo'' => "(GMT+09:00) Tokyo",
''Australia/Adelaide'' => "(GMT+09:30) Adelaide",
''Australia/Darwin'' => "(GMT+09:30) Darwin",
''Asia/Yakutsk'' => "(GMT+10:00) Yakutsk",
''Australia/Brisbane'' => "(GMT+10:00) Brisbane",
''Australia/Canberra'' => "(GMT+10:00) Canberra",
''Pacific/Guam'' => "(GMT+10:00) Guam",
''Australia/Hobart'' => "(GMT+10:00) Hobart",
''Australia/Melbourne'' => "(GMT+10:00) Melbourne",
''Pacific/Port_Moresby'' => "(GMT+10:00) Port Moresby",
''Australia/Sydney'' => "(GMT+10:00) Sydney",
''Asia/Vladivostok'' => "(GMT+11:00) Vladivostok",
''Asia/Magadan'' => "(GMT+12:00) Magadan",
''Pacific/Auckland'' => "(GMT+12:00) Auckland",
''Pacific/Fiji'' => "(GMT+12:00) Fiji",
);
Una lista completa, la utilizo en mis aplicaciones:
(También echa un vistazo a: https://github.com/paptamas/timezones )
<?php
$timezones =
array (
''(GMT-12:00) International Date Line West'' => ''Pacific/Wake'',
''(GMT-11:00) Midway Island'' => ''Pacific/Apia'',
''(GMT-11:00) Samoa'' => ''Pacific/Apia'',
''(GMT-10:00) Hawaii'' => ''Pacific/Honolulu'',
''(GMT-09:00) Alaska'' => ''America/Anchorage'',
''(GMT-08:00) Pacific Time (US & Canada); Tijuana'' => ''America/Los_Angeles'',
''(GMT-07:00) Arizona'' => ''America/Phoenix'',
''(GMT-07:00) Chihuahua'' => ''America/Chihuahua'',
''(GMT-07:00) La Paz'' => ''America/Chihuahua'',
''(GMT-07:00) Mazatlan'' => ''America/Chihuahua'',
''(GMT-07:00) Mountain Time (US & Canada)'' => ''America/Denver'',
''(GMT-06:00) Central America'' => ''America/Managua'',
''(GMT-06:00) Central Time (US & Canada)'' => ''America/Chicago'',
''(GMT-06:00) Guadalajara'' => ''America/Mexico_City'',
''(GMT-06:00) Mexico City'' => ''America/Mexico_City'',
''(GMT-06:00) Monterrey'' => ''America/Mexico_City'',
''(GMT-06:00) Saskatchewan'' => ''America/Regina'',
''(GMT-05:00) Bogota'' => ''America/Bogota'',
''(GMT-05:00) Eastern Time (US & Canada)'' => ''America/New_York'',
''(GMT-05:00) Indiana (East)'' => ''America/Indiana/Indianapolis'',
''(GMT-05:00) Lima'' => ''America/Bogota'',
''(GMT-05:00) Quito'' => ''America/Bogota'',
''(GMT-04:00) Atlantic Time (Canada)'' => ''America/Halifax'',
''(GMT-04:00) Caracas'' => ''America/Caracas'',
''(GMT-04:00) La Paz'' => ''America/Caracas'',
''(GMT-04:00) Santiago'' => ''America/Santiago'',
''(GMT-03:30) Newfoundland'' => ''America/St_Johns'',
''(GMT-03:00) Brasilia'' => ''America/Sao_Paulo'',
''(GMT-03:00) Buenos Aires'' => ''America/Argentina/Buenos_Aires'',
''(GMT-03:00) Georgetown'' => ''America/Argentina/Buenos_Aires'',
''(GMT-03:00) Greenland'' => ''America/Godthab'',
''(GMT-02:00) Mid-Atlantic'' => ''America/Noronha'',
''(GMT-01:00) Azores'' => ''Atlantic/Azores'',
''(GMT-01:00) Cape Verde Is.'' => ''Atlantic/Cape_Verde'',
''(GMT) Casablanca'' => ''Africa/Casablanca'',
''(GMT) Edinburgh'' => ''Europe/London'',
''(GMT) Greenwich Mean Time : Dublin'' => ''Europe/London'',
''(GMT) Lisbon'' => ''Europe/London'',
''(GMT) London'' => ''Europe/London'',
''(GMT) Monrovia'' => ''Africa/Casablanca'',
''(GMT+01:00) Amsterdam'' => ''Europe/Berlin'',
''(GMT+01:00) Belgrade'' => ''Europe/Belgrade'',
''(GMT+01:00) Berlin'' => ''Europe/Berlin'',
''(GMT+01:00) Bern'' => ''Europe/Berlin'',
''(GMT+01:00) Bratislava'' => ''Europe/Belgrade'',
''(GMT+01:00) Brussels'' => ''Europe/Paris'',
''(GMT+01:00) Budapest'' => ''Europe/Belgrade'',
''(GMT+01:00) Copenhagen'' => ''Europe/Paris'',
''(GMT+01:00) Ljubljana'' => ''Europe/Belgrade'',
''(GMT+01:00) Madrid'' => ''Europe/Paris'',
''(GMT+01:00) Paris'' => ''Europe/Paris'',
''(GMT+01:00) Prague'' => ''Europe/Belgrade'',
''(GMT+01:00) Rome'' => ''Europe/Berlin'',
''(GMT+01:00) Sarajevo'' => ''Europe/Sarajevo'',
''(GMT+01:00) Skopje'' => ''Europe/Sarajevo'',
''(GMT+01:00) Stockholm'' => ''Europe/Berlin'',
''(GMT+01:00) Vienna'' => ''Europe/Berlin'',
''(GMT+01:00) Warsaw'' => ''Europe/Sarajevo'',
''(GMT+01:00) West Central Africa'' => ''Africa/Lagos'',
''(GMT+01:00) Zagreb'' => ''Europe/Sarajevo'',
''(GMT+02:00) Athens'' => ''Europe/Istanbul'',
''(GMT+02:00) Bucharest'' => ''Europe/Bucharest'',
''(GMT+02:00) Cairo'' => ''Africa/Cairo'',
''(GMT+02:00) Harare'' => ''Africa/Johannesburg'',
''(GMT+02:00) Helsinki'' => ''Europe/Helsinki'',
''(GMT+02:00) Istanbul'' => ''Europe/Istanbul'',
''(GMT+02:00) Jerusalem'' => ''Asia/Jerusalem'',
''(GMT+02:00) Kyiv'' => ''Europe/Helsinki'',
''(GMT+02:00) Minsk'' => ''Europe/Istanbul'',
''(GMT+02:00) Pretoria'' => ''Africa/Johannesburg'',
''(GMT+02:00) Riga'' => ''Europe/Helsinki'',
''(GMT+02:00) Sofia'' => ''Europe/Helsinki'',
''(GMT+02:00) Tallinn'' => ''Europe/Helsinki'',
''(GMT+02:00) Vilnius'' => ''Europe/Helsinki'',
''(GMT+03:00) Baghdad'' => ''Asia/Baghdad'',
''(GMT+03:00) Kuwait'' => ''Asia/Riyadh'',
''(GMT+03:00) Moscow'' => ''Europe/Moscow'',
''(GMT+03:00) Nairobi'' => ''Africa/Nairobi'',
''(GMT+03:00) Riyadh'' => ''Asia/Riyadh'',
''(GMT+03:00) St. Petersburg'' => ''Europe/Moscow'',
''(GMT+03:00) Volgograd'' => ''Europe/Moscow'',
''(GMT+03:30) Tehran'' => ''Asia/Tehran'',
''(GMT+04:00) Abu Dhabi'' => ''Asia/Muscat'',
''(GMT+04:00) Baku'' => ''Asia/Tbilisi'',
''(GMT+04:00) Muscat'' => ''Asia/Muscat'',
''(GMT+04:00) Tbilisi'' => ''Asia/Tbilisi'',
''(GMT+04:00) Yerevan'' => ''Asia/Tbilisi'',
''(GMT+04:30) Kabul'' => ''Asia/Kabul'',
''(GMT+05:00) Ekaterinburg'' => ''Asia/Yekaterinburg'',
''(GMT+05:00) Islamabad'' => ''Asia/Karachi'',
''(GMT+05:00) Karachi'' => ''Asia/Karachi'',
''(GMT+05:00) Tashkent'' => ''Asia/Karachi'',
''(GMT+05:30) Chennai'' => ''Asia/Calcutta'',
''(GMT+05:30) Kolkata'' => ''Asia/Calcutta'',
''(GMT+05:30) Mumbai'' => ''Asia/Calcutta'',
''(GMT+05:30) New Delhi'' => ''Asia/Calcutta'',
''(GMT+05:45) Kathmandu'' => ''Asia/Katmandu'',
''(GMT+06:00) Almaty'' => ''Asia/Novosibirsk'',
''(GMT+06:00) Astana'' => ''Asia/Dhaka'',
''(GMT+06:00) Dhaka'' => ''Asia/Dhaka'',
''(GMT+06:00) Novosibirsk'' => ''Asia/Novosibirsk'',
''(GMT+06:00) Sri Jayawardenepura'' => ''Asia/Colombo'',
''(GMT+06:30) Rangoon'' => ''Asia/Rangoon'',
''(GMT+07:00) Bangkok'' => ''Asia/Bangkok'',
''(GMT+07:00) Hanoi'' => ''Asia/Bangkok'',
''(GMT+07:00) Jakarta'' => ''Asia/Bangkok'',
''(GMT+07:00) Krasnoyarsk'' => ''Asia/Krasnoyarsk'',
''(GMT+08:00) Beijing'' => ''Asia/Hong_Kong'',
''(GMT+08:00) Chongqing'' => ''Asia/Hong_Kong'',
''(GMT+08:00) Hong Kong'' => ''Asia/Hong_Kong'',
''(GMT+08:00) Irkutsk'' => ''Asia/Irkutsk'',
''(GMT+08:00) Kuala Lumpur'' => ''Asia/Singapore'',
''(GMT+08:00) Perth'' => ''Australia/Perth'',
''(GMT+08:00) Singapore'' => ''Asia/Singapore'',
''(GMT+08:00) Taipei'' => ''Asia/Taipei'',
''(GMT+08:00) Ulaan Bataar'' => ''Asia/Irkutsk'',
''(GMT+08:00) Urumqi'' => ''Asia/Hong_Kong'',
''(GMT+09:00) Osaka'' => ''Asia/Tokyo'',
''(GMT+09:00) Sapporo'' => ''Asia/Tokyo'',
''(GMT+09:00) Seoul'' => ''Asia/Seoul'',
''(GMT+09:00) Tokyo'' => ''Asia/Tokyo'',
''(GMT+09:00) Yakutsk'' => ''Asia/Yakutsk'',
''(GMT+09:30) Adelaide'' => ''Australia/Adelaide'',
''(GMT+09:30) Darwin'' => ''Australia/Darwin'',
''(GMT+10:00) Brisbane'' => ''Australia/Brisbane'',
''(GMT+10:00) Canberra'' => ''Australia/Sydney'',
''(GMT+10:00) Guam'' => ''Pacific/Guam'',
''(GMT+10:00) Hobart'' => ''Australia/Hobart'',
''(GMT+10:00) Melbourne'' => ''Australia/Sydney'',
''(GMT+10:00) Port Moresby'' => ''Pacific/Guam'',
''(GMT+10:00) Sydney'' => ''Australia/Sydney'',
''(GMT+10:00) Vladivostok'' => ''Asia/Vladivostok'',
''(GMT+11:00) Magadan'' => ''Asia/Magadan'',
''(GMT+11:00) New Caledonia'' => ''Asia/Magadan'',
''(GMT+11:00) Solomon Is.'' => ''Asia/Magadan'',
''(GMT+12:00) Auckland'' => ''Pacific/Auckland'',
''(GMT+12:00) Fiji'' => ''Pacific/Fiji'',
''(GMT+12:00) Kamchatka'' => ''Pacific/Fiji'',
''(GMT+12:00) Marshall Is.'' => ''Pacific/Fiji'',
''(GMT+12:00) Wellington'' => ''Pacific/Auckland'',
''(GMT+13:00) Nuku/'alofa'' => ''Pacific/Tongatapu'',
);
?>
Es muy importante almacenar los identificadores de zona horaria en su base de datos y no solo el desplazamiento de la zona horaria como "GMT + 2", debido a los Horario de verano.
Utilicé las dos listas de Jiew Meng y Tamás Pap, por cada una de ellas revisé el soporte de PHP del identificador de zona horaria (PHP admite menos de lo que el mundo sabe) e hice una lista compuesta. Para aquellas zonas horarias que estaban en ambas listas y tenían soporte de PHP pero tenían identificadores diferentes, seleccioné las que se usan en las ciudades de Geonames DB. El resultado está abajo:
$timezones = Array(
''(GMT-12:00) International Date Line West'' => ''Pacific/Kwajalein'',
''(GMT-11:00) Midway Island'' => ''Pacific/Midway'',
''(GMT-11:00) Samoa'' => ''Pacific/Apia'',
''(GMT-10:00) Hawaii'' => ''Pacific/Honolulu'',
''(GMT-09:00) Alaska'' => ''America/Anchorage'',
''(GMT-08:00) Pacific Time (US & Canada)'' => ''America/Los_Angeles'',
''(GMT-08:00) Tijuana'' => ''America/Tijuana'',
''(GMT-07:00) Arizona'' => ''America/Phoenix'',
''(GMT-07:00) Mountain Time (US & Canada)'' => ''America/Denver'',
''(GMT-07:00) Chihuahua'' => ''America/Chihuahua'',
''(GMT-07:00) La Paz'' => ''America/Chihuahua'',
''(GMT-07:00) Mazatlan'' => ''America/Mazatlan'',
''(GMT-06:00) Central Time (US & Canada)'' => ''America/Chicago'',
''(GMT-06:00) Central America'' => ''America/Managua'',
''(GMT-06:00) Guadalajara'' => ''America/Mexico_City'',
''(GMT-06:00) Mexico City'' => ''America/Mexico_City'',
''(GMT-06:00) Monterrey'' => ''America/Monterrey'',
''(GMT-06:00) Saskatchewan'' => ''America/Regina'',
''(GMT-05:00) Eastern Time (US & Canada)'' => ''America/New_York'',
''(GMT-05:00) Indiana (East)'' => ''America/Indiana/Indianapolis'',
''(GMT-05:00) Bogota'' => ''America/Bogota'',
''(GMT-05:00) Lima'' => ''America/Lima'',
''(GMT-05:00) Quito'' => ''America/Bogota'',
''(GMT-04:00) Atlantic Time (Canada)'' => ''America/Halifax'',
''(GMT-04:00) Caracas'' => ''America/Caracas'',
''(GMT-04:00) La Paz'' => ''America/La_Paz'',
''(GMT-04:00) Santiago'' => ''America/Santiago'',
''(GMT-03:30) Newfoundland'' => ''America/St_Johns'',
''(GMT-03:00) Brasilia'' => ''America/Sao_Paulo'',
''(GMT-03:00) Buenos Aires'' => ''America/Argentina/Buenos_Aires'',
''(GMT-03:00) Georgetown'' => ''America/Argentina/Buenos_Aires'',
''(GMT-03:00) Greenland'' => ''America/Godthab'',
''(GMT-02:00) Mid-Atlantic'' => ''America/Noronha'',
''(GMT-01:00) Azores'' => ''Atlantic/Azores'',
''(GMT-01:00) Cape Verde Is.'' => ''Atlantic/Cape_Verde'',
''(GMT) Casablanca'' => ''Africa/Casablanca'',
''(GMT) Dublin'' => ''Europe/London'',
''(GMT) Edinburgh'' => ''Europe/London'',
''(GMT) Lisbon'' => ''Europe/Lisbon'',
''(GMT) London'' => ''Europe/London'',
''(GMT) Monrovia'' => ''Africa/Monrovia'',
''(GMT+01:00) Amsterdam'' => ''Europe/Amsterdam'',
''(GMT+01:00) Belgrade'' => ''Europe/Belgrade'',
''(GMT+01:00) Berlin'' => ''Europe/Berlin'',
''(GMT+01:00) Bern'' => ''Europe/Berlin'',
''(GMT+01:00) Bratislava'' => ''Europe/Bratislava'',
''(GMT+01:00) Brussels'' => ''Europe/Brussels'',
''(GMT+01:00) Budapest'' => ''Europe/Budapest'',
''(GMT+01:00) Copenhagen'' => ''Europe/Copenhagen'',
''(GMT+01:00) Ljubljana'' => ''Europe/Ljubljana'',
''(GMT+01:00) Madrid'' => ''Europe/Madrid'',
''(GMT+01:00) Paris'' => ''Europe/Paris'',
''(GMT+01:00) Prague'' => ''Europe/Prague'',
''(GMT+01:00) Rome'' => ''Europe/Rome'',
''(GMT+01:00) Sarajevo'' => ''Europe/Sarajevo'',
''(GMT+01:00) Skopje'' => ''Europe/Skopje'',
''(GMT+01:00) Stockholm'' => ''Europe/Stockholm'',
''(GMT+01:00) Vienna'' => ''Europe/Vienna'',
''(GMT+01:00) Warsaw'' => ''Europe/Warsaw'',
''(GMT+01:00) West Central Africa'' => ''Africa/Lagos'',
''(GMT+01:00) Zagreb'' => ''Europe/Zagreb'',
''(GMT+02:00) Athens'' => ''Europe/Athens'',
''(GMT+02:00) Bucharest'' => ''Europe/Bucharest'',
''(GMT+02:00) Cairo'' => ''Africa/Cairo'',
''(GMT+02:00) Harare'' => ''Africa/Harare'',
''(GMT+02:00) Helsinki'' => ''Europe/Helsinki'',
''(GMT+02:00) Istanbul'' => ''Europe/Istanbul'',
''(GMT+02:00) Jerusalem'' => ''Asia/Jerusalem'',
''(GMT+02:00) Kyev'' => ''Europe/Kiev'',
''(GMT+02:00) Minsk'' => ''Europe/Minsk'',
''(GMT+02:00) Pretoria'' => ''Africa/Johannesburg'',
''(GMT+02:00) Riga'' => ''Europe/Riga'',
''(GMT+02:00) Sofia'' => ''Europe/Sofia'',
''(GMT+02:00) Tallinn'' => ''Europe/Tallinn'',
''(GMT+02:00) Vilnius'' => ''Europe/Vilnius'',
''(GMT+03:00) Baghdad'' => ''Asia/Baghdad'',
''(GMT+03:00) Kuwait'' => ''Asia/Kuwait'',
''(GMT+03:00) Moscow'' => ''Europe/Moscow'',
''(GMT+03:00) Nairobi'' => ''Africa/Nairobi'',
''(GMT+03:00) Riyadh'' => ''Asia/Riyadh'',
''(GMT+03:00) St. Petersburg'' => ''Europe/Moscow'',
''(GMT+03:00) Volgograd'' => ''Europe/Volgograd'',
''(GMT+03:30) Tehran'' => ''Asia/Tehran'',
''(GMT+04:00) Abu Dhabi'' => ''Asia/Muscat'',
''(GMT+04:00) Baku'' => ''Asia/Baku'',
''(GMT+04:00) Muscat'' => ''Asia/Muscat'',
''(GMT+04:00) Tbilisi'' => ''Asia/Tbilisi'',
''(GMT+04:00) Yerevan'' => ''Asia/Yerevan'',
''(GMT+04:30) Kabul'' => ''Asia/Kabul'',
''(GMT+05:00) Ekaterinburg'' => ''Asia/Yekaterinburg'',
''(GMT+05:00) Islamabad'' => ''Asia/Karachi'',
''(GMT+05:00) Karachi'' => ''Asia/Karachi'',
''(GMT+05:00) Tashkent'' => ''Asia/Tashkent'',
''(GMT+05:30) Chennai'' => ''Asia/Kolkata'',
''(GMT+05:30) Kolkata'' => ''Asia/Kolkata'',
''(GMT+05:30) Mumbai'' => ''Asia/Kolkata'',
''(GMT+05:30) New Delhi'' => ''Asia/Kolkata'',
''(GMT+05:45) Kathmandu'' => ''Asia/Kathmandu'',
''(GMT+06:00) Almaty'' => ''Asia/Almaty'',
''(GMT+06:00) Astana'' => ''Asia/Dhaka'',
''(GMT+06:00) Dhaka'' => ''Asia/Dhaka'',
''(GMT+06:00) Novosibirsk'' => ''Asia/Novosibirsk'',
''(GMT+06:00) Sri Jayawardenepura'' => ''Asia/Colombo'',
''(GMT+06:30) Rangoon'' => ''Asia/Rangoon'',
''(GMT+07:00) Bangkok'' => ''Asia/Bangkok'',
''(GMT+07:00) Hanoi'' => ''Asia/Bangkok'',
''(GMT+07:00) Jakarta'' => ''Asia/Jakarta'',
''(GMT+07:00) Krasnoyarsk'' => ''Asia/Krasnoyarsk'',
''(GMT+08:00) Beijing'' => ''Asia/Hong_Kong'',
''(GMT+08:00) Chongqing'' => ''Asia/Chongqing'',
''(GMT+08:00) Hong Kong'' => ''Asia/Hong_Kong'',
''(GMT+08:00) Irkutsk'' => ''Asia/Irkutsk'',
''(GMT+08:00) Kuala Lumpur'' => ''Asia/Kuala_Lumpur'',
''(GMT+08:00) Perth'' => ''Australia/Perth'',
''(GMT+08:00) Singapore'' => ''Asia/Singapore'',
''(GMT+08:00) Taipei'' => ''Asia/Taipei'',
''(GMT+08:00) Ulaan Bataar'' => ''Asia/Irkutsk'',
''(GMT+08:00) Urumqi'' => ''Asia/Urumqi'',
''(GMT+09:00) Osaka'' => ''Asia/Tokyo'',
''(GMT+09:00) Sapporo'' => ''Asia/Tokyo'',
''(GMT+09:00) Seoul'' => ''Asia/Seoul'',
''(GMT+09:00) Tokyo'' => ''Asia/Tokyo'',
''(GMT+09:00) Yakutsk'' => ''Asia/Yakutsk'',
''(GMT+09:30) Adelaide'' => ''Australia/Adelaide'',
''(GMT+09:30) Darwin'' => ''Australia/Darwin'',
''(GMT+10:00) Brisbane'' => ''Australia/Brisbane'',
''(GMT+10:00) Canberra'' => ''Australia/Sydney'',
''(GMT+10:00) Guam'' => ''Pacific/Guam'',
''(GMT+10:00) Hobart'' => ''Australia/Hobart'',
''(GMT+10:00) Melbourne'' => ''Australia/Melbourne'',
''(GMT+10:00) Port Moresby'' => ''Pacific/Port_Moresby'',
''(GMT+10:00) Sydney'' => ''Australia/Sydney'',
''(GMT+10:00) Vladivostok'' => ''Asia/Vladivostok'',
''(GMT+11:00) Magadan'' => ''Asia/Magadan'',
''(GMT+11:00) New Caledonia'' => ''Asia/Magadan'',
''(GMT+11:00) Solomon Is.'' => ''Asia/Magadan'',
''(GMT+12:00) Auckland'' => ''Pacific/Auckland'',
''(GMT+12:00) Fiji'' => ''Pacific/Fiji'',
''(GMT+12:00) Kamchatka'' => ''Asia/Kamchatka'',
''(GMT+12:00) Marshall Is.'' => ''Pacific/Fiji'',
''(GMT+12:00) Wellington'' => ''Pacific/Auckland'',
''(GMT+13:00) Nuku/'alofa'' => ''Pacific/Tongatapu''
);
este método se basa en su sistema operativo, para hacerlo funcionar siempre, simplemente almacene las zonas horarias existentes en una matriz / base de datos, también debe tener en cuenta las horas del día que pueden ser bastante útiles.
sourece http://en.wikipedia.org/wiki/Time_zone : PHP
Los objetos DateTime y las funciones relacionadas se han compilado en el núcleo de PHP desde 5.2. Esto incluye la capacidad de obtener y establecer la zona horaria del script predeterminado, y DateTime conoce su propia zona horaria internamente. PHP.net proporciona una extensa documentación sobre esto. [20] Como se señaló allí, la base de datos de la zona horaria más reciente se puede implementar a través de PECL timezonedb.
entonces, haz el db tú mismo o usa el PECL timezonedb
prueba esto:
<?php
/**
* Timezones list with GMT offset
*
* @return array
* @link http://.com/a/9328760
*/
function tz_list() {
$zones_array = array();
$timestamp = time();
foreach(timezone_identifiers_list() as $key => $zone) {
date_default_timezone_set($zone);
$zones_array[$key][''zone''] = $zone;
$zones_array[$key][''diff_from_GMT''] = ''UTC/GMT '' . date(''P'', $timestamp);
}
return $zones_array;
}
?>
<div style="margin-top: 20px;">
<select style="font-family: ''Courier New'', Courier, monospace; width: 450px;">
<option value="0">Please, select timezone</option>
<?php foreach(tz_list() as $t) { ?>
<option value="<?php print $t[''zone''] ?>">
<?php print $t[''diff_from_GMT''] . '' - '' . $t[''zone''] ?>
</option>
<?php } ?>
</select>
</div>
Fuente: http://www.pontikis.net/tip/?id=24
HTH
si está buscando generar una lista de zona horaria similar a la que aparece en la imagen a continuación
Puede usar el siguiente código php para generar la lista desplegable utilizando DateTimeZone::listIdentifiers - timezone_identifiers_list - Devuelve una matriz indexada numéricamente que contiene todos los identificadores de zona horaria definidos. Si desea una lista de TODOS los valores posibles (incluidos los alias compatibles hacia atrás), use DateTimeZone::ALL_WITH_BC
en lugar de DateTimeZone::ALL
echo "<select>";
$tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL);
foreach($tzlist as $value)
{
echo "<option value=". $value .">". $value ."</option>";
}
echo "<select>";