调整“NOW()”时区


Adjust "NOW()" timezone

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

UPDATE last_seen=NOW()

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

谢谢

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

这是另一个很好的资源:

PHP和MySQL有时区问题

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

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

http://dev.mysql.com/doc/refman//5.5/en/time-zone-support.html 你需要

设置MySQL的时区概念。希望有帮助...

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

您有一些选择:

  • 设置 MySQL 的时区。
  • 使用 PHP 在存储之前设置日期。
  • 存储为 UTC 时间戳,然后显示正确的本地时间。更多代码,但我推荐。