如何显示 dst 空闲时区偏移量?
Posted
技术标签:
【中文标题】如何显示 dst 空闲时区偏移量?【英文标题】:How to show dst free timezone offset? 【发布时间】: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 说了什么。
【参考方案1】:
您只能从Date
对象中获取当前是否处于夏令时的信息; DateTimeZone
在 DST 中从不“存在”,它仅包含日期进入 DST 的信息何时,因此它始终取决于特定的 Date
实例。 Date
类上没有专门的方法,但它是可能的 date formatter:
echo 'Is DST: ', $date->format('I') ? 'yes' : 'no';
【讨论】:
完美 :) 这就是我想要的以上是关于如何显示 dst 空闲时区偏移量?的主要内容,如果未能解决你的问题,请参考以下文章
获取节点中特定时区的 UTC 偏移量和 DST 信息? [复制]