bash(> 4.2)脚本时区偏移格式为小时和分钟

时间:2018-01-17 07:22:25

标签: bash

我正在使用GNU bash,版本4.3。我怎样才能将时区表示为小时和分钟?

这是代码。

./ time.sh

printf -v t '%(%s)T' -1
export TZ=UTC


counter=1
while [ "$counter" -le 10 ]
do
    ((t=t+600))
    printf '%(%y-%m-%dT%H:%M:%S%z)T\n' "$t"
    ((counter++))
done

echo All done

结果如下。

#bash time.sh
18-01-17T07:29:50+0000
18-01-17T07:39:50+0000
18-01-17T07:49:50+0000
18-01-17T07:59:50+0000
18-01-17T08:09:50+0000
18-01-17T08:19:50+0000
18-01-17T08:29:50+0000
18-01-17T08:39:50+0000
18-01-17T08:49:50+0000
18-01-17T08:59:50+0000
All done

但我想显示结果格式,如'18 -01-17T08:59:50 + 00:00'。 我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

使用date代替printf

date --iso-8601=seconds --date="@$t"

请注意,这假设为GNU date; POSIX规范中不存在--iso-8601参数。 POSIX也没有%:z(甚至%z),所以如果需要便携,你需要一个不同的解决方案。