为所有用户将时钟设置为 24 小时格式

为所有用户将时钟设置为 24 小时格式

在 Fedora 30 上,我当前在桌面环境中以 24 小时格式显示日期。我正在通过 chronyd 同步时间。但在 CLI 上,时间是为Fri 22 Nov 2019 02:47:51 PM EST所有用户显示的。

我想将时间格式设置为使用 24 小时制。timedatectl作为用户进行设置和重新登录没有任何区别。

答案1

如果您date在命令行上使用该命令,并返回类似的内容Fri 22 Nov 2019 02:47:51 PM EST,那么这意味着您的区域设置当前设置为指定 12 小时时间格式的区域设置。

键入locale以查看当前区域设置。基本上,所有区域设置都只是环境变量,但它们之间存在一些依赖关系。

locale设置的逻辑如下:

  • 首先,该LANG变量将定义所有的默认区域设置LC_* 语言环境类别,除非对特定类别有更具体的设置。

  • 每个区域设置类别都有一个名称,例如LC_CTYPE所使用的字符集、LC_COLLATE排序顺序以及LC_TIME日期和时间的表示形式。如果存在与语言环境类别名称相对应的环境变量,它将覆盖LANG.

  • 最后,还有一个终极覆盖LC_ALL。如果设置了,它将覆盖所有其他区域设置。它通常用在脚本中或类似于export LC_ALL=C,以确保脚本使用的任何命令的输出将采用 POSIX 默认美国英语格式,而不是任何可能使解析输出变得更加困难的本地化格式。 (当然,在脚本中解析供人类使用的输出首先并不是一个理想的选择 - 如果命令具有“脚本友好的输出”选项,您应该使用它!)

从历史上看,在 RedHat/Fedora 上,系统默认区域设置应位于/etc/sysconfig/i18n文件中(i18n = 国际化[s|z]ation,i 和 n 之间有 18 个字符)。在现代版本中,应该有一个localectl可用于持久查询和修改区域设置和键盘布局设置的命令。请注意,环境变量设置始终可用于覆盖系统范围的区域设置默认值!

如果您使用默认en_US.UTF-8区域设置,则将en_GB.UTF-8是最接近的 24 小时时间表示形式。要设置它,请使用:

localectl set-locale LC_TIME=en_GB.UTF-8

然后注销并重新登录以使更改在您的会话中生效。

如果您使用其他区域设置,请使用localectl list-locales查看可用的区域设置定义。

如果您不确定,可以通过将所需的区域设置指定为命令的环境变量来测试输出date

$ LC_TIME=en_GB.UTF-8 date
Sat 23 Nov 15:47:16 EET 2019
$ LC_TIME=en_US.UTF-8 date
Sat 23 Nov 2019 03:47:19 PM EET

相关内容