如何正确处理时区转换?

时间:2011-03-18 20:20:06

标签: php mysql timezone

好的,

我有问题。我正在建立一个最终会持有大量客户数据记录的网站。因为客户端可以导出和导入他们的数据,所以我必须能够在站点和服务器中维护基于会话的时区。

现在我的服务器设置为GMT。当我在shell上运行date命令时,我发现,这在发布时是正确的。

Fri Mar 18 20:04:32 GMT 2011

然后当我做的时候 - 显示给了我,再次这是正确的。

Fri 18 Mar 2011 08:06:22 PM GMT

现在我告诉php将其时区更改为GMT-4(因为这是我在DST中的时区因素分析)

date_default_timezone_set('Etc/GMT-4');
echo date("m/d/Y g:i:s A T");

我得到03/19/2011 00:11:35 AM GMT-5完全错了,而不是花了5个小时的时间它增加了5个小时。

然后我这样做了:

date_default_timezone_set('Etc/GMT+4');
echo date("m/d/Y g:i:s A T");

我得到了03/18/2011 4:14:56 GMT + 4。哪个是正确的时间。 MySQL做同样的事情。似乎两者都想要反转时间调整。我在设置上遗漏了什么吗?

1 个答案:

答案 0 :(得分:3)

不,我认为你误解了符号/语法。

这个想法是你设置+,如果你想要到达的时区位于本初子午线的西边,你设置-它就在它的东边。所以它实际上与您添加或带走的小时数无关,而是回到示例,GMT + 4:

  

格林威治以西的国家

这基本上是美国的东部边缘,他们在英格兰落后我们几个小时......以这种方式思考应该是有道理的。