如何显示 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 信息? [复制]

如何在 .NET 中的 DST 时间获取 UTC 偏移量

Python & pytz:确定时区是不是支持 DST 以及 DST 和非 DST UTC 偏移量是多少

在 DateTime DST 重叠期间选择首选偏移量

如何在Elm中以GMT显示当前时区偏移量

使用本地时区在 Python 中获取正确的时区偏移量