2011-03-18 63 views
0

好吧,如何正确处理时区转换?

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

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

Fri Mar 18 20:04:32 GMT 2011 

然后,当我做hwclock --show是给了我,再次,这是正确的。

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"); 

我得到2011年3月19日上午12时11分35秒格林尼治标准时间-5是完全错误的,而不是采取5个小时,它增加了5个小时。

于是我就这样做:

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

我03/18/2011下午四时14分56秒GMT + 4。这是正确的时间。 MySQL做同样的事情。似乎两个人都想要反转时间调整。我在设置上丢失了什么?

回答

3

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

想法是,如果您想要到达的时区在主子午线以西,并且您设置了-它在它的东边,那么您设置了+。因此,它实际上并没有什么关系的小时数添加或拿走,而是要回去的例子,GMT + 4:

4个国家小时是格林威治

以西

这基本上是美国的东部边缘,他们在英国身后几个小时......这样想想应该是有道理的。

+0

事实上,它并没有使因为在我设置日期时间的每台计算机上的原因它显示东部时区旁边的GMT-5,但我想我只是在编程中反转我的+/-。 – Pyromanci 2011-03-19 21:33:08