我试图使用“日期”来获取不同时区的时间,但失败了。我在谷歌上找到的所有方法都涉及更改系统上的时区,但这不是我想要的。
是否有一个命令可以返回与我所在时区不同的当前时间?
答案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 小时)之类的值。