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

时间:2014-11-07 13:19:36

标签: bash date timezone


我想通过bash命令从另一个时区(UTC-4)获取日期和时间,但我不想将其配置为系统的默认TZ。
有一个简单的方法吗?
例如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

4 个答案:

答案 0 :(得分:4)

您可以使用

TZ=America/New_York date

或者如果你想做日期算术,你可以使用

date -d "+5 hours"

答案 1 :(得分:3)

您可以使用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

答案 2 :(得分:1)

如果其他解决方案不起作用,请使用

date --date='TZ="UTC+4" 2016-08-22 10:37:44' "+%Y-%m-%d %H:%M:%S"
  

2016-08-22 16:37:44

答案 3 :(得分:0)

我为此使用了一个小脚本,所以我不必知道或记住我要查找的时区的确切名称。该脚本将搜索字符串作为参数,并给出与搜索匹配的任何时区的日期和时间。我将其命名为wdate

#!/bin/sh

# Show date and time in other time zones

search=$1

zoneinfo=/usr/share/zoneinfo/posix/
format='%a %F %T'

find -L $zoneinfo -type f \
    | grep -i "$search" \
    | while read z
      do
          d=$(TZ=$z date +"$format")
          printf "%-34s %23s\n" ${z#$zoneinfo} "$d"
      done

示例输出:

$ wdate fax
America/Halifax                    Wed 2020-01-15 07:55:43

$ wdate canad
Canada/Pacific                     Wed 2020-01-15 04:03:54
Canada/Central                     Wed 2020-01-15 06:03:54
Canada/Mountain                    Wed 2020-01-15 05:03:54
Canada/Saskatchewan                Wed 2020-01-15 06:03:54
Canada/Atlantic                    Wed 2020-01-15 08:03:54
Canada/Newfoundland                Wed 2020-01-15 08:33:54
Canada/Yukon                       Wed 2020-01-15 04:03:54
Canada/Eastern                     Wed 2020-01-15 07:03:54