0

现在我的查询看起来像这样(相关部分):

UPDATE last_seen=NOW()

但它插入了一个比我早 2 小时的时间。有什么办法可以调整吗?

谢谢

4

4 回答 4

2

在您的数据库上设置时区..看看这篇文章。 https://stackoverflow.com/a/3451971/1227435

这是另一个很棒的资源:

PHP 和 MySQL 的时区问题

于 2012-07-05T20:53:19.627 回答
1

我建议你尝试这样的事情:

有一个hidden input收集用户的时区

<input type="hidden" name="offset" class="offset">
$('.offset').val(new Date().getTimezoneOffset());

然后在更新之前获取它并像这样将其转换为秒

$offset    = intval($_REQUEST['_offset']) * 60;

最后将其添加到time()

$now = time() + $offset;

执行上述操作,您将获得一个变量,其中包含客户在其时区中的时间。如果您不希望这样,并且希望每个人都有一个共同的时间,只需在您的以下设置您的时区index.php

date_default_timezone_set('TIMEZONE IN HERE'); //Supported timezone list: http://www.php.net/manual/en/timezones.php

但最好将其设置在您的php.ini(时区)或更改服务器的时区(Debian/Ubuntu: dpkg-reconfigure tzdata

于 2012-07-05T21:00:17.170 回答
0

http://dev.mysql.com/doc/refman//5.5/en/time-zone-support.html您需要设置 MySQL 的时区概念。希望有帮助...

于 2012-07-05T20:55:32.793 回答
0

听起来 MySQL 和你不在同一个时区。

你有一些选择:

  • 设置 MySQL 的时区。
  • 使用 PHP 设置存储前的日期。
  • 存储为 UTC 时间戳,然后显示正确的本地时间。更多代码,但我推荐。
于 2012-07-05T20:54:27.677 回答