我想用bash命令从另一个时区(UTC-4)获取日期和时间,但我不想将其配置为系统的默认TZ。
有简单的方法吗?
E.g 1(当前):
$ date
fri nov 7 13:15:35 UTC 2014
E.g 2(我需要的):
$ date (+ some option for UTC-4)
fri nov 7 09:15:35 UTC 2014
您可以使用
TZ=America/New_York date
或者,如果你想做日期运算,你可以使用
date -d "+5 hours"
您可以使用TZ
中的偏移值来获取不同时区的日期:
TZ=UTC date -R
Fri, 07 Nov 2014 13:55:07 +0000
TZ=UTC+4 date -R
Fri, 07 Nov 2014 09:54:52 -0400
我使用了一个小脚本,所以我不必知道或记住我要查找的时区的确切名称。该脚本将搜索字符串作为参数,并为与搜索匹配的任何时区提供日期和时间。我把它命名为wdate
。
#!/bin/bash
# Show date and time in other time zones
search=$1
format='%a %F %T %z'
zoneinfo=/usr/share/zoneinfo/posix/
if command -v timedatectl >/dev/null; then
tzlist=$(timedatectl list-timezones)
else
tzlist=$(find -L $zoneinfo -type f -printf "%Pn")
fi
grep -i "$search" <<< "$tzlist"
| while read z
do
d=$(TZ=$z date +"$format")
printf "%-32s %sn" "$z" "$d"
done
示例输出:
$ wdate fax
America/Halifax Fri 2022-03-25 09:59:02 -0300
或
$ wdate canad
Canada/Atlantic Fri 2022-03-25 10:00:04 -0300
Canada/Central Fri 2022-03-25 08:00:04 -0500
Canada/Eastern Fri 2022-03-25 09:00:04 -0400
Canada/Mountain Fri 2022-03-25 07:00:04 -0600
Canada/Newfoundland Fri 2022-03-25 10:30:04 -0230
Canada/Pacific Fri 2022-03-25 06:00:04 -0700
Canada/Saskatchewan Fri 2022-03-25 07:00:04 -0600
Canada/Yukon Fri 2022-03-25 06:00:04 -0700
如果其他解决方案不起作用,请使用
date --date='TZ="UTC+4" 2016-08-22 10:37:44' "+%Y-%m-%d %H:%M:%S"
2016-08-22 16:37:44