zona settimezone horaria default_time_zone date_default_timezone_set cambiar buenos america aires php timezone

settimezone - Lista de zonas horarias de EE. UU. Para utilizar PHP?



timezone laravel (4)

Aquí hay una lista que encontré:

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

¿Hay solo una lista de zonas horarias para Estados Unidos que puedo usar con php? Estoy usando los nombres de la zona horaria de php como America / Anchorage, php enumera los husos horarios aquí:

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

Quiero mostrarlos en un menú desplegable para que los seleccione el usuario, pero solo los necesito para los EE. UU., No quiero mostrar un grupo que se encuentre fuera de los EE. UU.


Como dijo deceze, puedes usar el indicador PER_COUNTRY.

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

Salida:

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


Esto te dará automáticamente una lista de las zonas horarias estadounidenses:

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);'')); }

Tenga en cuenta que esto incluirá también las zonas horarias de Sudamérica, Canadá, etc. Podrías jugar con DateTimeZone::PER_COUNTRY como un filtro para timezone_identifiers_list para PHP 5.3 y ver si eso te da el deseo que deseas, o filtrar la lista completa para US/ . La mejor opción es, probablemente, seleccionar manualmente las zonas horarias.


Manera de fuerza bruta para obtener TODAS las zonas horarias por país utilizando GEOIP de PHP. El código no está diseñado para verse bien. Debería llamar esto solo una vez y almacenar el resultado en alguna parte.

$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);