PHP -将字符串时区格式转换为偏移整数


PHP - Convert String Timezone Format to Offset Integer

非常简单:

PHP以以下格式返回时区:

"America/Los_Angeles"

我想把它转换成:

-7

我找到了许多代码来转换它,计算与自定义函数的差异。但作为一个极简主义者,我无法相信没有更简单的方法(也许是一个日期时间函数)来立即获得值。有人知道吗?

$dateTimeZone = new DateTimeZone("America/Los_Angeles");
$date = new DateTime('', $dateTimeZone);
echo $dateTimeZone->getOffset($date)/60/60;

PHP使用IANA时区数据库中的标准时区。

"America/los - angeles " 与-7不同。-7是"时区偏移量",而不是"时区"。阅读时区标签wiki中的"Time Zone != Offset" .

考虑"America/Los_Angeles"代表美国太平洋时间,在太平洋夏令时(PDT)期间只有-7。一年中其余时间为太平洋标准时间(PST),即-8。

John回答中提供的代码将正确地为您提供时区用于当前日期和时间的偏移量。请注意,该值将根据运行代码的时间而变化。

另外,您应该意识到,虽然您可以在任何特定时刻确定特定时区的偏移量,但反之则不成立。您不能将-7作为时区,并期望有人能够分辨出它是太平洋夏令时。考虑到-7也适用于山区标准时间,亚利桑那州全年使用。