Список временных зон США для использования PHP?

Есть ли только список часовых поясов для Соединенных Штатов, которые я могу использовать с php? Я использую имена часовых поясов от php, таких как America / Anchorage, php перечисляет часовые пояса здесь:

http://us.php.net/manual/en/timezones.others.php

Я хочу отобразить их в раскрывающемся списке для выбора пользователем, но мне нужны только те, которые нужны для США, я не хочу показывать кучу, находящуюся за пределами США.

Solutions Collecting From Web of "Список временных зон США для использования PHP?"

Вот список, который я нашел:

Eastern Time America/New_York Central Time America/Chicago Mountain Time America/Denver Mountain Time (no DST) America/Phoenix Pacific Time America/Los_Angeles Alaska Time America/Anchorage Hawaii-Aleutian America/Adak Hawaii-Aleutian Time (no DST) Pacific/Honolulu 

Как сказал deceze, вы можете использовать флаг PER_COUNTRY.

 $timezone_identifiers = DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, 'US'); foreach($timezone_identifiers as $timezone_identifier) { echo "$timezone_identifier\n"; } 

Вывод:

 America/Adak America/Anchorage America/Boise America/Chicago America/Denver America/Detroit America/Indiana/Indianapolis America/Indiana/Knox America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Tell_City America/Indiana/Vevay America/Indiana/Vincennes America/Indiana/Winamac America/Juneau America/Kentucky/Louisville America/Kentucky/Monticello America/Los_Angeles America/Menominee America/Metlakatla America/New_York America/Nome America/North_Dakota/Beulah America/North_Dakota/Center America/North_Dakota/New_Salem America/Phoenix America/Shiprock America/Sitka America/Yakutat Pacific/Honolulu 

Это автоматически предоставит вам список американских часовых поясов:

 if (defined('DateTimeZone::AMERICA')) { // PHP 5.3+ $timezoneIdentifiers = timezone_identifiers_list(DateTimeZone::AMERICA); } else { // PHP 5.2 $timezoneIdentifiers = timezone_identifiers_list(); $timezoneIdentifiers = array_filter($timezoneIdentifiers, create_function('$tz', 'return preg_match("/^America\//", $tz);')); } 

Обратите внимание, что это также относится к южноамериканским, канадским и так далее. Вы можете играть с DateTimeZone::PER_COUNTRY в качестве фильтра для timezone_identifiers_list для PHP 5.3 и посмотреть, хотите ли вы этого захотите, или отфильтровать полный список для US/ . Лучший выбор, вероятно, для того, чтобы подбирать часовые пояса.

Метод Brute-force для получения ВСЕХ временных интервалов для каждой страны с использованием PHP-технологии GEOIP. Код не предназначен, чтобы выглядеть красиво. Вы должны вызвать это только один раз и сохранить результат где-нибудь.

 $timezones = array(); foreach (range('A', 'Z') as $i) { foreach (range('A', 'Z') as $j) { $country = $i . $j; foreach (range('A', 'Z') as $k) { foreach (range('A', 'Z') as $l) { $region = $k . $l; if ($timezone = geoip_time_zone_by_country_and_region($country, $region)) { $timezones[$country][$timezone] = true; } } } foreach (range(0, 99) as $m) { if ($timezone = geoip_time_zone_by_country_and_region($country, sprintf('%02d', $m))) { $timezones[$country][$timezone] = true; } } } } var_dump($timezones);