Проблемы с часовым поясом с PHP и MySQL

Время моего сервера в GMT, и я делаю следующее, когда кто-то выходит в сеть.

<code>// Set a default timezone
$defaultTimeZone = 'America/Toronto';

// load the user, if they are online...
$onlineUser = new user();
if (isset($_SESSION['user_id']))
{
    if ($onlineUser->loadUser($_SESSION['user_id']))
    {
        $defaultTimeZone = $onlineUser->timeZone;
    }
}

// set time zones
date_default_timezone_set($defaultTimeZone);
$db->query("SET SESSION time_zone = '".$defaultTimeZone."'");
</code>

Итак, моя проблема заключается в следующем ... всякий раз, когда кто-то что-то делает, он сохраняет дату / время по местному времени пользователя ... вызывая у меня целый ряд проблем.

Все, что я хочу, это чтобы все было сохранено в GMT, но пользователи могли видеть & amp; взаимодействовать с данными в местном часовом поясе.

EDIT:

Вот как я обновляю статус пользователей:

<code>public function updateStatus()
{
    global $db, $common, $config;

    // update the user record
    $data = array(
        'date_last_active'  => new Zend_Db_Expr('NOW()')
    );

    $db->update('users', $data, 'user_id='.$this->userId);
}
</code>

Вот моя функция, чтобы превратить штамп даты в секунды ...

<code>public function dateTimeToUnixTime($dateString)
{
    if (strlen($dateString) < 10)
    {
        return "";
    }

    $parseDateTime = split(" ", $dateString);
    $parseDate = split("-", $parseDateTime[0]);

    if (isset($parseDateTime[1]))
    {
        $parseTime = split(":", $parseDateTime[1]);
    }
    else
    {
        $parseTime = split(":", "00:00:00");
    }

    return mktime($parseTime[0], $parseTime[1], $parseTime[2], $parseDate[1], $parseDate[2], $parseDate[0]);
}
</code>

И наконец, как я сравниваю даты:

<code>    $date = $oUser->dateLastActive;

    $lastSeen = abs($common->dateTimeToUnixTime(date('Y-m-d H:i:s')) - $common->dateTimeToUnixTime($date));

    if ($lastSeen < 300 )
    {
        echo "<font size='1' color='green'><strong>Online</strong></font>";
    }

    if ($lastSeen >= 300)
    {
        echo "<font size='1' color='black'><strong>Offline</strong></font>";
    }
</code>

Ответы на вопрос(3)

Ваш ответ на вопрос