2013-11-29 4 views
0

Итак, я работал с классом DateTimeZone в php и смог распечатать список всех часовых поясов в Соединенных Штатах. Я напечатал его ниже.PHP U.S Карта часовых поясов?

Только вопрос: боюсь, пользователи не поймут, что это значит? Я положил все это в раскрывающийся список, но, скажем, вы живете во Флориде, например, знает ли средний человек, какой из них будет там выбирать часовой пояс? Я думаю, было бы намного проще показать PST, EST, MNT, CST или HAST, HST или AKST. Есть ли способ использовать класс DateTimeZone с использованием сокращений PST, EST и т. Д.?

По-прежнему использовать я имею в виду, уметь конвертировать между разными моментами, например, 2:00 PST конвертировать в EST и т. Д.??

'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' 
+0

Как насчет [timezone_abbreviations_list()] (http://us1.php.net/manual/en/function.timezone-abbreviations-list.php)? Это показывает аббревиатуры, такие как 'est'. – Rudie

+0

Можете ли вы показать мне пример кода? –

+0

Также я создал этот список из этого, что является проблемой. –

ответ

1

Как насчет

// Show to the user 
$options = array(); 
foreach (timezone_abbreviations_list() as $abbr => $tz) { 
    $options[ $tz[0]['timezone_id'] ] = strtoupper($abbr); 
} 
// array('America/Porto_Acre' => 'ACST', ...) 

// Use 
$user_timezone_id = ... somewhere in account? ... 
date_default_timezone_set($user_timezone_id); 

Или что-то подобное. Пользователь выбирает аббревиатуры, такие как ACST и EST, и система использует идентификатор часового пояса в фоновом режиме.

Если вы знаете EST как-то, но вы не знаете America/New_York, вы можете сделать:

$user_timezone_abbr = ... somewhere in account? ... 
$timezones = timezone_abbreviations_list(); 
$timezone_id = $timezones[$user_timezone_abbr][0]['timezone_id']; 
date_default_timezone_set($user_timezone_id); 

или что-то подобное.

+0

Ваше решение действительно хорошее, спасибо! –

Смежные вопросы