有人可以告诉我DateTimeZone :: getOffset PHP函数如何工作吗?

问题描述 投票:1回答:1

我有这行代码:

echo (new DateTimeZone('UTC'))->getOffset(new DateTime('now', new DateTimeZone('America/New_York')));

它返回零。但是我希望它返回UTCAmerica / New_York时区之间的时差。

然后我两次提供了相同的时区:

echo (new DateTimeZone('America/New_York'))->getOffset(new DateTime('now', new DateTimeZone('America/New_York')));

我希望它返回零,因为时区相同。但现在它返回-18000(这是America / New_YorkUTC之间的偏移量。)

documentation中,它说getOffset()总是将偏移量返回给GMT(= UTC)。但是,为什么getOffset不是静态的?如果总是相对于GMT的偏移量,为什么第一个构造函数中的时区会起作用?

我知道DateTime

类中还有另一个getOffset方法,该方法更易于使用。但是我想了解DateTimeZone类中的getOffset方法如何工作。

我有以下代码行:echo(new DateTimeZone('UTC'))-> getOffset(new DateTime('now',new DateTimeZone('America / New_York')));;它返回零。但我希望它能返回...

php timezone timezone-offset
1个回答
2
投票

时区的偏移量是与UTC的时差。时区的偏移量全年可能会变化,具体取决于DST生效和失效的时间。因此,您不能像这样获得时区的偏移量

© www.soinside.com 2019 - 2024. All rights reserved.