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

时间:2014-08-01 18:28:40

标签: php datetime timezone timezone-offset

非常简单:

PHP以下列格式返回时区:

"America/Los_Angeles"

我想将其转换为:

-7

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

2 个答案:

答案 0 :(得分:2)

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

Demo

答案 1 :(得分:1)

PHP使用the IANA time zone database中的标准时区。

"美国/洛杉矶"是与-7相同。 -7是"时区偏移",而不是"时区"。阅读"时区!=偏移"在the timezone tag wiki

考虑"America/Los_Angeles"代表美国太平洋时间,在太平洋夏令时(PDT)期间仅为-7。今年剩下的时间,它在太平洋标准时间(PST),即-8。

John的答案中提供的代码将正确地为您提供时区用于当前日期和时间的偏移量。认识到值将根据您运行代码的时间而改变。

此外,您应该意识到,虽然您可以在任何特定时刻确定特定时区的偏移量,但反之则不然。你不能将-7视为一个时区,并期望有人能够告诉它是太平洋夏令时。考虑到-7也适用于亚利桑那州全年使用的Mountain Standard Time。