UTC 到本地时间调整与 PHP 的困境


UTC to local time adjustment woes with PHP

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

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

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

所以我正在这样做:

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

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

这样的单行陈述会有什么问题?

对不起,如果我问的是显而易见的。我来自.NET世界.我是PHP的新手。

PHP 的

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

PHP 的

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

与其使用 date(),您可能还想签入 gmdate()。像这样:

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

可能是你需要的。