php mysql update 时间_PHP和MySQL存在时区问题

我的服务器时间是格林尼治标准时间(GMT),每当有人在线时,我都会执行以下操作。

// 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."'");

所以,我的问题是……每当有人执行某项操作时,它都会将日期/时间存储在用户本地时间中……这给我带来了很多麻烦。

我想要的是将所有内容存储在GMT中,但要让用户在其本地时区查看数据并与之交互。

编辑:

这是我更新用户状态的方法:

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

}

这是我将日期戳转换为秒的功能。

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]);

}

最后,我如何比较日期:

$date = $oUser->dateLastActive;

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

if ($lastSeen < 300 )

{

echo "Online";

}

if ($lastSeen >= 300)

{

echo "Offline";

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值