如何将 `date` 的输出改回 24 小时格式?

Met*_*hic 5 date upgrade glibc locale

显然最近的更改(在 Glibc 2.29 中?)导致date命令以 12 小时格式开始打印时间:

$ date
Fri 23 Aug 2019 07:34:13 PM PDT
Run Code Online (Sandbox Code Playgroud)

这是我的默认语言环境

$ cat /etc/locale.conf 
LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

如何配置我的系统以恢复以 24 小时格式显示日期?

Met*_*hic 8

正如 IRC 上 jamespharvey20 所建议的,我只是更改LC_TIME为另一个语言环境。我将其设置为/etc/locale.conf

$ cat /etc/locale.conf
LANG=en_US.UTF-8
LC_TIME=en_GB
Run Code Online (Sandbox Code Playgroud)

我还在我的 shell 配置文件中导出了这个值LC_TIME,以避免重新启动(我不知道如何让 Systemd 重新读取该值locale.conf)。这看起来有点老套,但我认为这是我们想出的最好的办法。此外,它保留了新的“DD MMM”格式,我更喜欢旧的“MMM DD”格式。

  • 这还有一个好处,就是可以将 `strftime("%c / %X")`(如 `date +%c/%X`)转换为 24 小时格式。即使在旧版本的 glibc 中,在美国语言环境中也会采用 12 小时格式。或者,您可以使用“LC_TIME=C”,这将更加面向未来,因为格式由 POSIX 指定并且不太可能更改(并且恰好是英语) (2认同)