ale*_*c89 7 bash timezone date
我想使用 bash 命令从另一个时区 (UTC-4) 获取日期和时间,但我不想将其配置为系统的默认 TZ。
有没有简单的方法来做到这一点?
例如 1(当前):
$ date
fri nov 7 13:15:35 UTC 2014
Run Code Online (Sandbox Code Playgroud)
例如2(我需要的):
$ date (+ some option for UTC-4)
fri nov 7 09:15:35 UTC 2014
Run Code Online (Sandbox Code Playgroud)
SMA*_*SMA 13
你可以用
TZ=America/New_York date
Run Code Online (Sandbox Code Playgroud)
或者如果你想做日期算术,你可以使用
date -d "+5 hours"
Run Code Online (Sandbox Code Playgroud)
我为此使用了一个小脚本,因此我不必知道或记住我正在寻找的时区的确切名称。该脚本采用搜索字符串作为参数,并给出与搜索匹配的任何时区的日期和时间。我给它起了个名字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
Run Code Online (Sandbox Code Playgroud)
输出示例:
$ wdate fax
America/Halifax Fri 2022-03-25 09:59:02 -0300
Run Code Online (Sandbox Code Playgroud)
或者
$ 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
Run Code Online (Sandbox Code Playgroud)
您可以使用偏移值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
Run Code Online (Sandbox Code Playgroud)