【问题标题】:How to show dst free timezone offset?如何显示 dst 空闲时区偏移量?
【发布时间】:2019-08-29 08:21:50
【问题描述】:

有一个显示时区偏移量的时区信息字段(例如 'UTC+1' )。为此使用了“getOffset”,但现在在 dst 时间,它返回同一时区的“UTC+2”。

我的问题是如何检测 dst 是否启用或如何获得 dst 空闲偏移量?

检查了 DateTimeZone 和 DateTime 文档,但没有找到任何东西。

【问题讨论】:

  • 听起来有点像XY problem。是的,时区全年都会更改其 UTC 偏移量。这就是为什么如果您想稍后引用相同的 timezone 仅存储 UTC 偏移量是没有用的。您应该像Europe/Amsterdam 一样存储时区,然后您可以根据需要计算出它的UTC 偏移量。仅仅拥有“UTC+2”甚至不能告诉您该国是否遵守 DST 以及在任何给定时间“无 DST”的方向。
  • 阅读localtime,特别是 $is_associative 参数。而且,@deceze 说了什么。

标签: php datetime dst timezone-offset


【解决方案1】:

您只能从Date 对象中获取当前是否处于夏令时的信息; DateTimeZone 在 DST 中从不“存在”,它仅包含日期进入 DST 的信息何时,因此它始终取决于特定的 Date 实例。 Date 类上没有专门的方法,但它是可能的 date formatter

echo 'Is DST: ', $date->format('I') ? 'yes' : 'no';

【讨论】:

  • 完美 :) 这就是我想要的
猜你喜欢
  • 2011-08-04
  • 2011-12-13
  • 2011-04-11
  • 1970-01-01
  • 2017-03-04
  • 1970-01-01
  • 2016-12-07
  • 2015-12-20
  • 2015-02-14
相关资源
最近更新 更多