非常简单:

PHP 按以下格式返回时区:

"America/Los_Angeles"

我想将其转换为:

-7

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

有帮助吗?

解决方案

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

演示

其他提示

PHP 使用标准时区 IANA 时区数据库.

“美国/洛杉矶”是 不是 与-7相同。-7 是“时区偏移量”,而不是“时区”。阅读“时区!=偏移量” 时区标签 wiki.

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top