PHP - 将字符串时区格式转换为偏移整数[关闭]
-
02-01-2020 - |
题
非常简单:
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 也适用于亚利桑那州全年使用的山区标准时间。
不隶属于 StackOverflow