将UTC时间转换为GMT bash脚本

时间:2015-08-17 01:59:54

标签: bash shell date data-conversion

我正在尝试在我的小脚本中将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相同。

提前致谢。

3 个答案:

答案 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