ВНИМАНИЕ! по умолчанию временная зона должна стоять \"UTC\".
<?php
/**
* В ядре
*/
# Эту переменную записываю в ручную но у вас она должна получаться из БД
if(empty($user['time_zone'])) $user['time_zone'] = '+4';
define('TIME_ZONE', $user['time_zone']);
/**
* Создаем файл с изменением настроек
* часового пояса
*/
# Список временных зон
$timeZones = array(
'-12' => '-12.00',
'-11' => '-11.00',
'-10' => '-10.00',
'-9' => '-9.00',
'-8' => '-8.00',
'-7' => '-7.00',
'-6' => '-6.00',
'-5' => '-5.00',
'-4.5' => '-4.30',
'-4' => '-4.00',
'-3.5' => '-3.30',
'-3' => '-3.00',
'-2.5' => '-2.30',
'-2' => '-2.00',
'-1' => '-1.00',
'0' => '0',
'+1' => '+1.00',
'+2' => '+2.00',
'+2.5' => '+2.30',
'+3' => '+3.00',
'+3.5' => '+3.30',
'+4' => '+4.00',
'+4.5' => '+4.30',
'+5' => '+5.00',
'+5.5' => '+5.30',
'+5.75' => '+5.45',
'+6' => '+6.00',
'+6.5' => '+6.30',
'+7' => '+7.00',
'+8' => '+8.00',
'+8.5' => '+8.30',
'+9' => '+9.00',
'+9.5' => '+9.30',
'+10' => '+10.00',
'+11' => '+11.00',
'+12' => '+12.00',
'+13' => '+13.00',
);
# Сохранение данных
if(!empty($timeZones[$_POST['time_zone']])) {
// Тут мы сохраняем данные в таблицу "users" => поле "time_zone" (его нужно будет создать) из переменной $_POST['time_zone']
echo 'Временная зона установлена!';
}
# Форма изменения
else {
$time = time();
echo '<form action="" method="post">';
echo '<select size="1" name="time_zone">';
foreach($timeZones as $k => $v) {
echo '<option value="'. $k .'">';
echo 'Сейчас '. date('G:i', $time + $k * 3600) .' (UTC'. ($v ? $v : '') .')';
echo '</option><br />';
}
echo '</select><br />';
echo '<input type="submit" name="submit" value="Сохранить" />';
echo '</form>';
}
/**
* В функции
*/
# Функция вывода времени/даты со смещением
function myDate($params, $time = '') {
if(empty($time)) $time = time();
$time = $time + TIME_ZONE * 3600;
$time = date($params, $time);
return $time;
}
/**
* Пример вывода
* работаем с функцией myDate() так же как и с date()
*/
# Выводим время
echo '<br />'. myDate('G:i');
?>