在 bash Shell 脚本中将带有偏移字符串的 GMT 转换为 MST

Convert GMT with offset string to MST in bash Shell script

我有一个字符串变量(具有 GMT 偏移量的日期时间),格式如下。 如何在 bash shell 脚本中将其转换为 MST?

Input GMT :- 08/Sep/2020:11:38:01 +0000

Output MST :- 08/Sep/2020:04:38:01 -0700

我们可以这样得到偏移量

offset=$(date +%-z)

我不想再次从字符串转换为日期,然后使用偏移量和减去偏移量来达到 MST.Is 有更好的方法来转换它吗?

08/Sep/2020:11:38:01 +0000bash 转换为 08 Sep 2020 11:38:01 +0000:

gmt="08/Sep/2020:11:38:01 +0000"
gmt="${gmt//\// }"                # replace all / with spaces
gmt="${gmt/:/ }"                  # replace first : with space

然后将其与 GNU 日期一起使用:

TZ="MST" date --date="$gmt" +'%d/%h/%Y:%H:%M:%S %z'

输出:

08/Sep/2020:04:38:01 -0700