在哪里可以找到发行版安装过程中可用的时区选项列表?

在哪里可以找到发行版安装过程中可用的时区选项列表?

我正在构建一个应用程序,用户可以为某些操作选择与实际时区不同的时区,而无需过多了解细节,我可以向您保证,支持多个时区实际上是有意义的某些利基业务。

我知道 IANA TZ 数据库,但我想知道是否有任何发行版提供了当前的列表,其中包含任何格式的时区和偏移信息,并为我节省了解析数据库的一些麻烦。

据我所知,时区数据库往往包含完整的历史信息,尽管我正在“现在”寻找当前有效/可用的信息。如果安装程序认为其中一些信息是多余的信息/未向用户显示,并且我非常想继承这些决定,那么继承安装程序的决定是很有用的。

由于我认为发行版的设置/安装程序已经显示/提供了此信息,因此我想知道在哪里可以获取该信息。

谢谢 :)

答案1

如果您的用户并非都是熟练的 Linux 管理员,他们可能会发现 tzselect 比其他选项更直观。它是一个 CLI 菜单驱动的系统,允许用户选择地区、国家、地区。第一个菜单如下所示:

root@scrspdimsolr01:~# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
 1) Africa
 2) Americas
 3) Antarctica
 4) Asia
 5) Atlantic Ocean
 6) Australia
 7) Europe
 8) Indian Ocean
 9) Pacific Ocean
10) coord - I want to use geographical coordinates.
11) TZ - I want to specify the timezone using the Posix TZ format.
#?

在几个选项之后,它会输出一个可用于设置个人时区变量的命令 - 输出可以被解析和使用,或者可以跟进并让用户将建议的响应剪切并粘贴到另一个提示中。浏览菜单后的结果如下所示:

You can make this change permanent for yourself by appending the line
        TZ='America/Los_Angeles'; export TZ
to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
America/Los_Angeles

由于最后一行要发送到 STDOUT,您可以设置它和/或将其传送到用户的 .profile(.profile 用于单独的 Linux 登录,或者您可以在该实例中为该用户设置实时时区)。

答案2

我猜想所有发行版都附带 IANA TZ 数据库,对于 Fedora 和 Debian,该软件包都被调用tzdata,您将在/usr/share/zoneinfo.但最简单的方法应该是使用一些提供这些已解析信息的库。这取决于您使用的语言或框架。例如,如果您使用的是 Python,则可以使用datetimeand zoneinfo(区域信息3.9中添加的,你也可以使用皮茨它具有类似的 API,但不是 python 标准库的一部分)模块:

import datetime
import zoneinfo

zoneinfo.available_timezones()  # simple list of all timezones

zoneinfo.ZoneInfo('US/Alaska').utcoffset(datetime.datetime.now())  # utc offset in datetime format

这实际上正是 Fedora 安装程序 Anaconda 所要做的因为它是用 Python 编写的。

相关内容