为什么php timezone在本地主机上是正确的,但上传到服务器后不正确?

时间:2012-05-11 15:29:16

标签: php mysql datetime timezone phpmyadmin

我正在使用php和mysql。当我在本地主机上的mysql数据库中插入时间值时,将应用正确的时间。我正在使用now()功能。

当我将时间值插入到我的网络托管帐户的my_sql数据库中时,它会显示错误的时区。

如果来自不同时区的用户发布了某些内容,并且我正在我的时区中查看,我该如何设置它以便向用户显示的时间相对于用户从中查看的时间。

$sql1="INSERT INTO notifications (stamp) 
            VALUES (now());

3 个答案:

答案 0 :(得分:6)

您的服务器位于不同的时区。

您可以在PHP和MySQL中设置时区。

date_default_timezone_set('America/Los_Angeles');

在MySQL中:

SET time_zone = 'America/Los_Angeles';

或者,您可以将时间存储为timestamp列,这些列始终是基础数据中的UTC。

答案 1 :(得分:2)

来自the documentation for NOW()

  

该值以当前时区表示。

因此,如果您的本地计算机与主机的计算机位于不同的时区,则看到不同的结果。

您可能需要考虑使用UTC_TIMESTAMP()。 (我不清楚如果在适当的上下文中使用它是否会返回DATETIME值,但这可能是你想要的。)

答案 2 :(得分:0)

您的网络服务器php.ini可能设置了不同的时区。

您可以通过date_default_timezone_set()

在php文件中更改它