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

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

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

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

答案1

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

TZ=Asia/Singapore date
Sun Jun 14 17:17:49 SGT 2015

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

zones() { ls /usr/share/zoneinfo/"$1" ;}
zone() { TZ="$1"/"$2" date; }

第一个将打印某个地区的正确区域列表,并配备该信息,然后您可以打印当地时间。

答案2

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

例子:

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

$ zdump Japan
Japan  Sun Jun 14 18:34:36 2015 JST

时区数据文件位于/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

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

截屏

答案3

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

TZ=Pacific/Yap date
TZ=Pacific/Yap xclock

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

标准变量的值TZ也是如此。如果您想要与 UTC 的固定偏移量,可以使用TZ=-4(GMT 以东 4 小时)或TZ=9:30(GMT 以西 9.5 小时)之类的值。

相关内容