如何在utc时间和本地时间之间以秒为单位进入bash差异?
答案 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,请参阅下面的评论。