2012-05-11 40 views
1

我使用PHP和MySQL。当我在本地主机上的mysql数据库中插入时间值时,将应用正确的时间。我正在使用now()函数。为什么PHP的时区是上传到服务器后,本地主机上正确,但不正确的?

当我在my-hosting帐户的my_sql数据库中插入时间值时,它显示错误的时区。

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

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

查看您的php.ini,您可以设置服务器的时区。 –

+0

服务器在不同的时区! – Zuul

+0

a)服务器的时区设置为? b)什么时区在php.ini中设置? c)在mysql中设置了哪些时区? – GordonM

回答

6

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

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

date_default_timezone_set('America/Los_Angeles'); 

而且在MySQL:

SET time_zone = 'America/Los_Angeles'; 

或者,您可以将时间存储为timestamp列,它总是在底层数据UTC。

2

在你的PHP文件中更改它从the documentation for NOW()

值在当前时区表示。

所以,如果本地计算机是在不同的时区到主机的机器,你会看到不同的结果。

您可能需要考虑使用UTC_TIMESTAMP()来代替。 (如果在适当的环境下使用,这个值是否会返回DATETIME值,但这可能是您想要的值。)

+0

如果从不同的时区发布了一些用户,而另一个用户在不同的时区查看它,我怎么可以设置它,以便向用户显示的时间是相对于在用户观看它。将使用UTC_TIMESTAMP()来做到这一点?他们无论如何不强迫用户输入他们所在的时区? – arboles

+0

@arboles:目前尚不清楚你想要达到的目标。你应该写下具体的例子,具体的时间和时区,然后研究如何实现它。 –

相关问题