如何在几秒钟内获得utc时间和本地时间之间的差异?

时间:2013-01-15 15:47:16

标签: bash date

如何在utc时间和本地时间之间以秒为单位进入bash差异?

4 个答案:

答案 0 :(得分:3)

如果没有一些与时间相关的滑稽动作,

%s并不是一个简单的答案,epoch秒显然是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)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这只适用于整个小时而非分钟的地方。

echo $(($( date +%z)*36))

答案 3 :(得分:-1)

echo $((date +%s - date --date='TZ="America/New York"' +%s))

您的时区位于/ etc / timezone。

更新:%s始终基于UTC,请参阅下面的评论。