Bash:从另一个时区获取日期和时间




我想用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

相关内容

  • 没有找到相关文章

最新更新