2011-10-11 135 views
0

当地时间我觉得一分钱开始下降,但我不能找到一个明确的定义。我的继承人问题:设置服务器

我是英国的,但我的服务器是北京时间。我一直在通过简单的NOW()我的数据库字段“时间”(这是一个时间戳)设置为添加数据库enteries。这似乎增加了我在美国凤凰城服务器的本地时间(在我后面-7小时)。

我应该使用date_defaault_timezone_set和_GET,设置为我适当的时区,来处理我的位置的差异(即我有专门负责处理的时区进出我的数据库)。

因此,例如,访问我的数据库在网上我我的配置设置为美国/凤凰城,但如果我复制我的分贝到英国上我的本地主机上运行我需要设置时区欧洲/伦敦。只有那么我会正确地把时间戳写入我的数据库。

是这样吗? 在此先感谢

+0

如果你不工作绝对时间(即时间戳),您不应将它们以该格式保存在数据库中。改用'datetime'字段。 – JJJ

+0

为什么我应该使用日期时间字段? – giles

+0

因为那时他们不会受到时区的影响。如果保存“2011-10-11 10:00:00”,则意味着上午10点。如果您保存1318320841,它的多数民众赞成表现为在世界各地不同的时间在不同的时区的绝对时间。 – JJJ

回答

0

您可以为MySQL在一次连接后设置时区:

mysql_query("SET time_zone = your_timezone"); 

或者你也可以设置时区为你的PHP设置:

date_default_timezone_set('your_timezone'); 
+0

这个php会覆盖两个吗? (看到我从一个PHP表达式调用NOW()) – giles

+0

我想在sql查询中使用'NOW()',对吧?因为php没有这个功能。 – Vasily