我想使用Bash命令从另一个时区(UTC-4)获取日期和时间,但不希望将其配置为系统的默认TZ。
有简单的方法吗?
例如1(当前):
$ date
fri nov 7 13:15:35 UTC 2014
例如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
TZ
带有偏移量的工作方式。我建议使用偏移量,因为它不需要记住长而有效的时区名称。 - anubhavaTZ=UTC date
设置了TZ
,运行了date
,并将TZ
的值恢复为其先前的值(未设置、不同的值或与您指定的值相同,具体情况视情况而定)。 - tripleeeTZ=UTC-4 date
混淆地将时区打印为“UTC”,尽管它实际上不是。(这在您的示例输出中也可以看到。) - tripleeedate -R
来获取 --rfc-2822
格式,这样可以正确显示偏移量。 - anubhavaTZ=UTC date -R
是我在 Mac OS 上进行 redis set key 插入并想要 UTC 的唯一可行解决方案:redis-cli set starttime "$(TZ=UTC date -R)"
。 - james-see我使用一个小脚本来实现这个功能,这样我就不必知道或记住我要查找的时区的确切名称。该脚本以搜索字符串作为参数,并针对与搜索匹配的任何时区提供日期和时间。我将其命名为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 "%P\n")
fi
grep -i "$search" <<< "$tzlist" \
| while read z
do
d=$(TZ=$z date +"$format")
printf "%-32s %s\n" "$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
TZ=Asia/Kolkata
的方式来获取IST(这很棘手,因为TZ=UTC-5:30
并不完全明显;例如UTC-5.5
无法正常工作)。 - tripleee-d
参数是用于日期工具中的“夏令时偏移量”,而不是日期字符串的参数。 - Himanshu TanwarTZ=UTC date -R
可以使用。 - james-seedate -d“+5小时30分钟”
- Mohammad Yasir K P