我有一些代码填充带有时区的选择框,但它包括亚洲,非洲等。我想只列出美国时区。那可能吗?我现在的代码是......
/*
Get all timezone listing
*/
function event_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'] = date('P', $timestamp);
$zones_array[$key]['diff_from_GMT'] = 'UTC/GMT ' . date('P',
$timestamp);
}
return $zones_array;
}
非常感谢任何信息!
答案 0 :(得分:1)
timezone_identifiers_list()
有两个参数。如果第一个参数是DateTimeZone::PER_COUNTRY
,则获取时区的常量和双字母国家/地区代码。所以这几乎可以得到它:
timezone_identifiers_list(DateTimeZone::PER_COUNTRY, 'US')
如果您想获得7个缩写而不是29个America/City
值:
function event_tz_list() {
foreach(timezone_identifiers_list(DateTimeZone::PER_COUNTRY, 'US') as $key => $zone) {
$timestamp = time();
date_default_timezone_set($zone);
$abbrev = date('T'); // use as the key and you won't get duplicates
$zones_array[$abbrev]['zone'] = $abbrev;
$zones_array[$abbrev]['offset'] = date('P', $timestamp);
$zones_array[$abbrev]['diff_from_GMT'] = 'UTC/GMT ' . date('P', $timestamp);
}
return $zones_array;
}
print_r(event_tz_list());
收率:
Array
(
[HAST] => Array
(
[zone] => HAST
[offset] => -10:00
[diff_from_GMT] => UTC/GMT -10:00
)
[AKST] => Array
(
[zone] => AKST
[offset] => -09:00
[diff_from_GMT] => UTC/GMT -09:00
)
[MST] => Array
(
[zone] => MST
[offset] => -07:00
[diff_from_GMT] => UTC/GMT -07:00
)
[CST] => Array
(
[zone] => CST
[offset] => -06:00
[diff_from_GMT] => UTC/GMT -06:00
)
[EST] => Array
(
[zone] => EST
[offset] => -05:00
[diff_from_GMT] => UTC/GMT -05:00
)
[PST] => Array
(
[zone] => PST
[offset] => -08:00
[diff_from_GMT] => UTC/GMT -08:00
)
[HST] => Array
(
[zone] => HST
[offset] => -10:00
[diff_from_GMT] => UTC/GMT -10:00
)
)
其中显示了7个时区(我学到了一些东西):
夏威夷 - 阿留申标准时间(HAST)与夏威夷标准时间(HST)之间没有时间差异。