Linux 在给定日期和时间获取当前(或其他)时区的 UTC 偏移量

Linux 在给定日期和时间获取当前(或其他)时区的 UTC 偏移量

智利的情况非常特殊,因为每年夏令时的变化天数都不一样……

是否有一个函数可以获取给定 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

相关内容