使用PHP进行本地时间调整的UTC

UTC to local time adjustment woes with PHP

本问题已经有最佳答案,请猛点这里访问。

有人可以解释为什么以下不起作用?

我有一个在共享主机帐户上运行的PHP脚本。 脚本应输出我的本地时间(对于我所在的时区,即GMT-8:00PST。)

我正在阅读time()PHP方法的文档,该方法应该返回UTC(或GMT)的Unix时间戳。 好的,好的。 所以我需要减去8小时才能得到当地时间,对吧?

所以我这样做:

1
echo(date("n/j/Y, g:i:s A", time() - 28800));    //8hrs = 28800 seconds

但是我的时间已经落后了5个小时!

一行声明中可能出现什么问题?

PS。 对不起,如果我问明显的话。 我来自.NET的世界。 我是PHP的新手。


PHP的time()函数将始终返回自纪元以来的秒数。 获得意外行为的罪魁祸首实际上是date()函数。

PHP的date()函数会自动将日期转换为PHP的当前默认时区,这必须是GMT - 3.这就是为什么当你减去8小时后你就落后了5个小时。

您可能想要签入gmdate()而不是使用date()。 就像是:

1
echo(gmdate("n/j/Y, g:i:s A", time() - 28800));

可能是你需要的。