2009-12-31 3 views
0

Я установил часовой пояс пользователей в заголовке моей страницы, в моей области настройки, хотя где пользователь может выбрать часовой пояс, я пытаюсь показать фактическое время в раскрывающемся списке часовых поясов.Конфликт PHP при попытке установить часовую зону более одного раза

текущее время уже изменилось от меня настроек страницы часового пояса выше, так что уже измененное время становится снова изменить

<?PHP 
date_default_timezone_set($_SESSION['time_zone']); 
?> 

Над установить часовой пояс, ниже мой код, который проходит через массив часовой пояс и строит раскрывающийся список формы, он будет иметь все мои часовые пояса и покажет, какой из них я сохранил в переменной сеанса. Он также показывает текущее время рядом с именем для каждого часового пояса в моем списке.

Проблема в том, что, как мне кажется, предыдущий заданный часовой пояс для страницы, код выше, я думаю, что это бесполезное время в моем выпадающем списке. Если я покажу текущее время на странице, это правильно для моего часовой пояс, если я смотрю время в раскрывающемся списке, они часами, любая идея, как я могу это сделать?

<?PHP 
// the time zone array would be here 

echo '<select name="time_zone_list" id="time_zone_list"/>'; 
$_SESSION['time_zone'] = (isset($_SESSION['time_zone'])) ? $_SESSION['time_zone'] : ''; 

// the current time is already changed from me setting the pages timezone above, so the already changed time is getting changed again  
$current_date = date("h:i:s A"); 

foreach ($time_zone_array as $tz_id => $tz_name) { 
    $selected = ""; 
    if ($tz_id == $_SESSION['time_zone']) $selected = ' selected="selected"'; 
    //build time to show user in dropdown 

    $dt_obj = new DateTime($current_date." UTC"); 
    $dt_obj->setTimezone(new DateTimeZone($tz_id)); 
    print '<option value=' . $tz_id . $selected . '> ' .date_format($dt_obj, 'h:i:s A'). ' ' . $tz_name . '</option>'; 
} 
echo '</select>'; 
?> 

ответ

0

Я был в состоянии получить его правильно работать путем изменения даты() для gmdate() для моего текущего времени

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