【发布时间】:2020-03-22 20:49:12
【问题描述】:
我得到了这行代码:
echo (new DateTimeZone('UTC'))->getOffset(new DateTime('now', new DateTimeZone('America/New_York')));
它返回零。但我希望它能够返回 UTC 和 America/New_York 时区之间的差异。
然后我两次提供了相同的时区:
echo (new DateTimeZone('America/New_York'))->getOffset(new DateTime('now', new DateTimeZone('America/New_York')));
我希望它返回零,因为时区是相同的。但它现在返回 -18000(这是 America/New_York 和 UTC 之间的偏移量)。
在documentation 中,它说 getOffset() 始终将偏移量返回到 GMT (=UTC)。但是为什么 getOffset 不是静态的呢?如果总是相对于 GMT 的偏移量,为什么第一个构造函数中的时区会起作用?
我知道 DateTime 类中还有另一个 getOffset 方法更易于使用。但我想了解 DateTimeZone 类中的 getOffset 方法是如何工作的。
【问题讨论】:
标签: php timezone timezone-offset