2017-02-22 25 views
1

У меня есть немного кода, который заполняет selectbox с часовыми поясами, но включает в себя Asia, Africa и т. Д. Я бы хотел, чтобы у него был только список часовых поясов США. Это возможно? Код, который у меня есть, это ...TIMEZONE select box change to USA only

/* 
    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; 

    } 

Любая информация была бы принята с благодарностью!

ответ

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).

+0

Был как-то отредактировать мой вопрос, чтобы включить это! – miken32

+0

Ты потрясающий! Спасибо!! –

+0

Рад помочь, не забудьте принять ответ. – AbraCadaver