0

如何以秒为单位获取 UTC 时间和本地时间之间的 bash 差异?

4

3 回答 3

3

%s如果没有一些与时间相关的滑稽动作,这并不是答案的一部分,纪元秒明确是 UTC(或者如果你是老派,可能是 GMT),所以设置 TZ 不会影响它。

类似于 twalberg 的建议:

IFS=":" read hh mm < <(date +%:z)
echo $(($hh*3600+$mm*60))

date您可以通过为命令设置 TZ 来测试这是否正在执行您想要的操作:

IFS=":" read hh mm < <(TZ=Australia/Sydney date %:z)    # answer is 39600
IFS=":" read hh mm < <(TZ=US/Eastern date +%:z)         # answer is -18000

(这不是严格意义上的 bash 答案,因为它需要 GNU 日期或等效版本,5.90 及更高版本支持 %:z 和 %::z)

于 2013-01-15T18:10:54.883 回答
0

您可能需要做一些工作才能在几秒钟内获得它,但date +%z会将您配置的时区偏移报告为[+-]HHMM. 解析它的输出并进行适当的数学运算以在几秒钟内计算出来。

于 2013-01-15T16:16:00.323 回答
0

这仅适用于整个小时而不是分钟的地方。

echo $(($( date +%z)*36))
于 2014-02-04T11:41:56.417 回答