【问题标题】:Offset of a given timezone from GMT in linux shell scriptlinux shell脚本中给定时区与GMT的偏移量
【发布时间】:2011-02-18 21:53:37
【问题描述】:

有没有办法在 linux shell 脚本中从 GMT 获取给定时区(EDT 或 America/New_York 等标识符)的偏移量?

【问题讨论】:

  • 你到底“给”了什么?
  • 时区的字符串标识符。例如美国/纽约或美国东部时间。
  • 如果你想从本地时间计算它是可能的。但是从一个非标准的字符串看来有点挑战性。
  • 字符串在我的控制之下。所以我可以将所需的任何字符串传递给脚本。

标签: linux timezone offset


【解决方案1】:

这是一种迂回的方式,但它有效 (loosely based on this):

#!/bin/bash
ZONE=$1
TIME=$(date +%s --utc -d "12:00:00 $ZONE")
UTC_TIME=$(date +%s --utc -d "12:00:00")
((DIFF=UTC_TIME-TIME))
echo - | awk -v SECS=$DIFF '{printf "%d",SECS/(60*60)}'

将其保存为tzoffset,使其可执行,然后像这样运行它:

tzoffset PST

当前形式的这个脚本只处理缩写的时区。

【讨论】:

    【解决方案2】:

    导出您的 TZ 环境变量并使用 %z 打印日期以获得时区偏移量。

    #!/bin/sh
    export TZ=":Pacific/Auckland"
    date +%z
    

    【讨论】:

    • 或者如果你不想破坏当前环境:TZ=":Pacific/Auckland" date +%z
    • 时区前不需要冒号
    • 这会考虑夏令时吗?
    • 这只是给出了与 UTC 的时间偏移量。如果你像我一样在美国/纽约时区,这将在冬季产生 -5,夏季产生 -4
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 2016-11-25
    相关资源
    最近更新 更多