如何获取不同时区的日期和时间?

时间:2021-01-25 10:52:04

标签: shell timezone

我想将 GMT 时间转换为 PST 时间,为此,我创建了以下示例脚本。

set -x
sDate=2021-01-26
sTime=18:10
gt="UTC"
tz=\"America/Los_Angeles\"
CurrentDate=$(date +"%Y-%m-%d %H:%M" -d "$sDate $sTime")  
echo $CurrentDate
NewDate=$(date -d "TZ=$tz $CurrentDate" +"%Y-%m-%d %H:%M")
echo $NewDate

输出:

+ sDate=2021-01-26
+ sTime=18:10
+ gt=UTC
+ tz="America/Los_Angeles"
+ date +%Y-%m-%d %H:%M -d 2021-01-26 18:10
+ CurrentDate=2021-01-26 18:10
+ echo 2021-01-26 18:10
2021-01-26 18:10
+ date -d TZ="America/Los_Angeles" 2021-01-26 18:10 +%Y-%m-%d %H:%M
+ NewDate=2021-01-27 02:10
+ echo 2021-01-27 02:10
2021-01-27 02:10

这是错误的输出。因为格林威治标准时间比太平洋标准时间早 8 小时,而且比格林威治标准时间早。

1 个答案:

答案 0 :(得分:1)

根据日期手册页示例:

Show the local time for 9AM next Friday on the west coast of the US

          $ date --date='TZ="America/Los_Angeles" 09:00 next Fri'

在您的示例中,NewDate 变量保存日期的值 - 2021-01-26 18:10,如美国/洛杉矶转换为当地时区 GMT。因此,在这种情况下,NewDate 值应始终大于 CurrentDate。

相关问题