在PHP中将时区从UTC转换为ET

时间:2015-03-16 19:27:57

标签: php timezone localhost

我尝试将时区从UTC转换为ET。当我将UTC(1:20 pm)转换为ET时,它在我的本地主机(windows)中工作得很好但在生产(Linux服务器)中.File_date显示为9.20上午。有什么想法,为什么它显示错误的时间?

            $original_datetime = date('Y-m-d H:i:s');

            $original_timezone = new DateTimeZone('UTC');

            $datetime = new DateTime($original_datetime, $original_timezone);

            $target_timezone = new DateTimeZone('America/New_York');

            $datetime->setTimeZone($target_timezone);

            $file_date = $datetime->format("m-d-Y g:i A");

1 个答案:

答案 0 :(得分:1)

这不是错误的时间。

东部时间和UTC目前相隔四小时。 UTC时间下午1:20是美国东部时间(东部时间)上午9:20。因此,您在生产中获得的结果是正确的。

在本地主机上逐步执行此代码,并检查您使用的每个变量。查看哪一个设置不正确。然后你会知道问题所在。

我怀疑问题是第一行应该调用gmdate()而不是date()gmdate()为您提供GMT中的当前时间,但date()会在您当地时间将其提供给您。如果您的生产服务器默认设置为GMT / UTC,则可能会有所不同。

但是,我想重申,你的本地结果是不正确的 - 而不是你的生产结果。上午9:20是从UTC到美国/纽约的1:20 PM正确转换。