智利的情况非常特殊,因为每年夏令时的变化天数都不一样……
是否有一个函数可以获取给定 UTC 时间的给定日期的 UTC 偏移量?
我看见Suse 文档类似的东西zdump -v /usr/share/zoneinfo/Chile/Continental
使我能够获得多年来的所有变化,但工作仍然必须完成......有什么命令可以做到这一点?
或者/并且是否存在一个函数,其中给定日期和时间从给定时区到 UTC?以及它的反面?
Linux 如何处理这些变化?没有找到比 Suse 更多的文档。
答案1
您可以使用该date
命令。设置时区,然后指定日期和时间。该命令将返回带有 -03 或 -04 的时间,因此您将知道 DST 是否生效。
例如,对于智利/大陆:
今年夏令时 (DST) 改变之前:
$ TZ=Chile/Continental date --date='2020-04-03 11:00 +00'
Fri Apr 3 11:00:00 -03 2020
今年夏令时 (DST) 调整后:
$ TZ=Chile/Continental date --date='2020-04-06 11:00 +00'
Mon Apr 6 11:00:00 -04 2020
要撤消此操作,只需将 TZ 设置为 UTC 并更改偏移量:
$ TZ=UTC date --date='2020-04-03 11:00 -04'
答案2
基于爱德华多特拉帕尼答案,对我来说最终的答案是
TZ=Chile/Continental date --date='TZ=Chile/Continental date --date='2020-04-05 02:00:15 +00' +%z
这使-0300
TZ=Chile/Continental date --date='2020-04-05 04:00:15 +00' +%z
这使-0400
列出区域
ls -l /usr/share/zoneinfo/
查看特定区域的详细信息
zdump -v /usr/share/zoneinfo/Chile/Continental