Problemy z strefą czasową w PHP i MySQL

Mój czas serwera jest w GMT i robię co następuje, gdy ktoś przychodzi online.

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

Więc moim problemem jest ... gdy ktoś coś zrobi, zapisuje datę / czas w lokalnym czasie użytkownika ... powodując cały problem.

Chcę tylko, aby wszystko było przechowywane w GMT, ale aby użytkownicy widzieli dane i korzystali z nich w lokalnej strefie czasowej.

EDYTOWAĆ:

Oto jak aktualizuję status użytkowników:

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

Oto moja funkcja, aby zamienić datownik na sekundy ...

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

I wreszcie, w jaki sposób porównuję daty:

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

questionAnswers(3)

yourAnswerToTheQuestion