Ubuntu 服务器 20.04 - 使用日期命令在 shell 上将时间格式设为 24 小时

Mad*_*rse 3 format time 20.04

我已经安装了 Ubuntu 服务器 20.04,但在 shell 中使用命令“日期”时,我找不到将时间格式显示为 24 小时的方法。我使用 Ubuntu 服务器 18.04 检查语言环境信息,一切看起来都一样,但在 18.04 上我有 24 小时格式的日期

Mon May 11 22:41:08 CEST 2020
Run Code Online (Sandbox Code Playgroud)

而在 20.04 是“不同的”和 12 小时格式

Mon 11 May 2020 10:41:40 PM CEST
Run Code Online (Sandbox Code Playgroud)

以下是 Ubuntu 18.04 locale 命令的结果

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

Ubuntu 20.04

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

这是命令 localectl 的结果

Ubuntu 18.04

   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: it
       X11 Model: pc105
Run Code Online (Sandbox Code Playgroud)

Ubuntu 20.04

   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: it
       X11 Model: pc105
Run Code Online (Sandbox Code Playgroud)

我不知道在哪里可以像在 Ubuntu 18.04 中那样以 24 小时格式更改时间。有人能给我一些帮助吗?

谢谢

Mat*_*usz 5

最简单的方法是将LC_TIME变量更改为使用所需时间格式的区域设置。en_GB例如使用 24 小时时钟。您可以使用localectl以下方法在系统范围内设置它:

localectl set-locale LC_TIME="en_GB.UTF-8"
Run Code Online (Sandbox Code Playgroud)

然后,您必须重新登录才能看到更改。

或者,您可以在语言环境定义文件中自定义日期和时间格式/usr/share/i18n/locales/en_US。您将在以下部分找到日期和时间格式:

% Appropriate date and time representation (%c)
d_t_fmt "%a %d %b %Y %r %Z"
%
% Appropriate date representation (%x)
d_fmt   "%m//%d//%Y"
%
% Appropriate time representation (%X)
t_fmt   "%r"
%
% Appropriate AM/PM time representation (%r)
t_fmt_ampm "%I:%M:%S %p"
%
% Appropriate date and time representation for date(1)
date_fmt "%a %d %b %Y %r %Z"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,要获得24小时时钟,必须更换%r,以%T和运行locale-gen再生的语言环境。

  • en_US 语言环境中的 24 小时时钟是 glibc 语言环境定义中的一个错误,并已在 [此提交](https://sourceware.org/git/?p=glibc.git;a=commit;h=7395f3a0efad9fc51bb54fa383ef6524702e0c49) 中得到纠正。所以,这个改变是有意为之的。 (2认同)