我有这行代码:
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方法如何工作。我有以下代码行:echo(new DateTimeZone('UTC'))-> getOffset(new DateTime('now',new DateTimeZone('America / New_York')));;它返回零。但我希望它能返回...
时区的偏移量是与UTC的时差。时区的偏移量全年可能会变化,具体取决于DST生效和失效的时间。因此,您不能像这样获得时区的偏移量