Мне было интересно, как сделать наилучшую пользовательскую конфигурацию, когда пользователь устанавливает свое собственное время по Гринвичу, например. если пользователь находился в часовом поясе GMT+3 и пользователь устанавливает его через UCP.
Что я сделал, так это каждый вариант в раскрывающемся меню:
<select name="timezone">
...
<option value="-7200">GMT-2</option>
<option value="-3600">GMT-1</option>
<option value="0">GMT</option>
<option value="3600">GMT+1</option>
<option value="7200">GMT+2</option>
...
</select>
Вот так, и когда пользователь выберет его, он добавит значение в его пользовательское поле в базе данных.
На чем я застрял, так это когда сообщение было создано пользователем, оно использует отметку time(), и я использую функцию gmdate(), которая выглядит следующим образом:
while(loop goes here)
{
$post_time = $row['post_time'] // e.g. 1282165261
if($row['user_timezone'] > 0)
{
$timezone = $post_time-$row['user_timezone'];
}
else
{
$timezone = $post_time+$row['user_timezone'];
}
}
Что выводится с этим форматом метки времени:
gmdate("D jS M Y @ g:iA", $timezone);
Но проблема в том, что если я использую что-то ниже GMT, например. GMT-1, GMT-6, меняется на +
Вопрос в том, как лучше всего настроить временные метки на предпочтительное для пользователя время по Гринвичу?