我正在尝试在我的小脚本中将UTC时间转换为GMT时间,但它不起作用:
TimestampUTC=$(date +"%s")
echo $TimestampUTC
dates=$(date -d @$TimestampUTC)
echo $dates
## 2 hours difference between UTC and GMT
Hours2=120
TimestampGMT=$((TimestampUTC - Hours2))
echo $TimestampGMT
diff=$((TimestampUTC - TimestampGMT))
echo $diff
dateGMT=$(date -d @$TimestampGMT)
echo $dateGMT
$dateGMT
的显示结果与$dates
相同。
提前致谢。
答案 0 :(得分:2)
错误。
Unix时间戳以秒为单位。
小时2 = 120表示120秒。
所以你的2个时间戳分歧2分钟,而不是2个小时。
此代码是正确的:
Hours2=7200
另外你声称GMT和UTC之间有2个小时,我相信你的意思是CET(欧洲中部时间)
注意:没有像CET时间戳那样的东西。它只是显示带有时区偏移的正常unix时间戳。因此,独立于世界位置,unix时间戳在全球范围内始终是相同的。
您可以通过此
替换所有代码# get the timestamp 2 hours in the future from now
date2h=$(date -d "2 hours" +%s)
它为您提供了未来的unix时间戳。它不是CET中的当前时间戳。当前的CET时间戳始终与UTC相同。
如何从UTC和CET获得时间?在命令之前设置环境变量TZ。
$ TZ=UTC date
Mon Aug 17 11:44:05 UTC 2015
$ TZ=CET date
Mon Aug 17 13:44:05 CEST 2015
$ TZ=GMT date
Mon Aug 17 11:44:05 GMT 2015
但时间戳始终相同
$ TZ=UTC date +%s
1439812072
$ TZ=CET date +%s
1439812072
$ TZ=GMT date +%s
1439812072
答案 1 :(得分:0)
GMT和UTC相差2小时。实际上它们完全没有区别。因此,显示GMT和UTC的日期将始终显示完全相同的数字。
我也不知道bash,但我发现很难相信2小时代表120分钟。通常在使用日期数学时使用毫秒。
答案 2 :(得分:0)
在您最喜欢的终端中使用以下序列
export TZ=GMT; date