php与mysql存在的问题_PHP和MySQL存在时区问题

我的服务器时间是格林尼治标准时间,每当有人上线时我会做以下事情.

// 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";

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值