PHP -将字符串时区格式转换为偏移整数[已关闭]

bxjv4tth  于 2023-06-28  发布在  PHP
关注(0)|答案(2)|浏览(114)

已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。

8年前关闭。
Improve this question
很简单:
PHP返回时区的格式如下:

"America/Los_Angeles"

我想把它转换为:

-7

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

h43kikqp

h43kikqp1#

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

Demo

2uluyalo

2uluyalo2#

PHP使用来自the IANA time zone database的标准时区。
“America/Los_Angeles”和-7不一样。-7是“时区偏移”,而不是“时区”。阅读“时区!=偏移量”(以the timezone tag wiki为单位)。
假设"America/Los_Angeles"表示美国太平洋时间,在太平洋夏令时(PDT)期间仅为-7。在一年中的其他时间,它是在太平洋标准时间(PST),这是-8。
John的答案中提供的代码将正确地给予您提供时区用于 * 当前 * 日期和时间的偏移量。要认识到,该值将根据您运行代码的时间而变化。
此外,您应该认识到,虽然您可以在任何特定时刻确定特定时区的偏移量,但反之则不然。你不能把-7当作一个时区,并期望有人能够告诉它是太平洋夏令时。考虑到-7也适用于亚利桑那州全年使用的山地标准时间。

相关问题