如何在不更改系统时间的情况下获取不同时区的当前时间?

ID-*_*ERO 17 date timestamps timezone

我正在尝试使用“日期”来获取不同时区的时间,但失败了。我在谷歌上找到的所有方法都涉及更改系统上的时区,但这不是我想要的。

是否有一个命令可以在与我自己的时区不同的时区中返回当前时间?

jas*_*yan 28

时区列在/usr/share/zoneinfo. 例如,如果您想要新加坡的当前时间,则可以将其传递给date

TZ=Asia/Singapore date
Sun Jun 14 17:17:49 SGT 2015
Run Code Online (Sandbox Code Playgroud)

为了简化这个过程,如果你需要频繁地建立不同时区的本地时间,你可以在你的 shell rc 文件中添加几个函数(例如,.bashrc):

zones() { ls /usr/share/zoneinfo/"$1" ;}
zone() { TZ="$1"/"$2" date; }
Run Code Online (Sandbox Code Playgroud)

第一个将打印一个地区的正确区域列表,并提供该信息,然后您可以打印本地时间。


Pan*_*dya 13

您可以使用zdump

NAME
       zdump - timezone dumper

SYNOPSIS
       zdump [ --version ] [ --help ] [ -v ] [ -c [loyear,]hiyear ] [ zonename ... ]

DESCRIPTION
       Zdump prints the current time in each zonename named on the command line.
Run Code Online (Sandbox Code Playgroud)

例子:

$ zdump ~$ zdump Iceland
Iceland  Sun Jun 14 09:40:30 2015 GMT

$ zdump Japan
Japan  Sun Jun 14 18:34:36 2015 JST
Run Code Online (Sandbox Code Playgroud)

时区数据文件位于/usr/share/zoneinfo

您还可以通过 打印所有时间find /usr/share/zoneinfo/ -type f | xargs zdump。并且可以针对迪拜的特定示例进行 grep

$ find /usr/share/zoneinfo/ -type f | xargs zdump | grep -i Dubai
/usr/share/zoneinfo/right/Asia/Dubai                      Sun Jun 14 13:38:26 2015 GST
/usr/share/zoneinfo/Asia/Dubai                            Sun Jun 14 13:38:51 2015 GST
Run Code Online (Sandbox Code Playgroud)

您可以使用gworldclock:-

NAME
       gworldclock - Displays time and date in specified time zones.

SYNOPSIS
       gworldclock [ -f FILE ]

DESCRIPTION
       gworldclock  displays  the  time  and  date of specified time zones using a GTK+ interface. It also allows the
       zones to be "rendezvoused" or "synchronised" to a time other than the current time.
Run Code Online (Sandbox Code Playgroud)

截屏


Gil*_*il' 9

几乎所有程序都使用TZ环境变量来确定时区,如果未设置该变量,则回退到系统设置。

TZ=Pacific/Yap date
TZ=Pacific/Yap xclock
Run Code Online (Sandbox Code Playgroud)

几乎所有操作系统(甚至 Windows)都使用来自IANA 数据库的时区信息。大多数时区有形式的名称,其中是典型的国家或地区,其定义了自己的时区规则的最大的城市。定义了一些缩写,例如中欧时间和东部标准时间,但由于地区之间的冲突,它们可能并不总是您所期望的(例如 EST 是美国的,而不是澳大利亚的)。时区规则通常是由文件中定义,,或一些类似的位置。Continent/TownCETEST/usr/share/zoneinfo/usr/lib/zoneinfo/usr/lib/locale/TZ

变量也有标准TZ。如果您想要与 UTC 的固定偏移量,您可以使用类似TZ=-4(格林威治标准时间以东 4 小时)或TZ=9:30(格林威治标准时间以西 9½ 小时)之类的内容。