Список временных зон США для использования PHP?
Есть ли только список часовых поясов для Соединенных Штатов, которые я могу использовать с php? Im использует имена часовых поясов от php, таких как America/Anchorage, php перечисляет временные зоны здесь:
http://us.php.net/manual/en/timezones.others.php
Я хочу отобразить их в раскрывающемся списке для выбора пользователем, но мне нужны только те, которые нужны для США, я не хочу показывать кучу, находящуюся за пределами США.
Ответы
Ответ 1
Вот список, который я нашел:
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
Ответ 2
Как сказано в 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
Ответ 3
Это автоматически предоставит вам список американских часовых поясов:
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/
. Лучший выбор, вероятно, заключается в том, чтобы вручную отображать часовые пояса.
Ответ 4
Метод грубой силы для получения ВСЕХ временных интервалов для каждой страны с использованием 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);