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


Converting timezone from UTC to ET in PHP

我试图将时区从UTC转换为ET。当我将UTC(下午1:20)转换为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");

这不是错误的时间。

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

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

我怀疑问题是第一行应该是对gmdate()的调用而不是date()gmdate()以格林威治标准时间提供当前时间,但date()以当地时间提供。 如果生产服务器默认设置为 GMT/UTC,则可能存在差异。

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