我想将 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 小时,而且比格林威治标准时间早。
答案 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。