如何在 Ubuntu 18.04.4 LTS 上将系统范围的日期和时间格式更改为 ISO 8601 YYYY-MM-DD hh:mm:ss 格式?

如何在 Ubuntu 18.04.4 LTS 上将系统范围的日期和时间格式更改为 ISO 8601 YYYY-MM-DD hh:mm:ss 格式?

我正在使用带有 GNOME DE 的 Ubuntu 18.04.4 LTS,我想将系统范围的日期和时间格式更改为 ISO 8601 格式,具体来说是日期为 YYYY-MM-DD,时间为 hh:mm:ss。

我怎样才能做到这一点?

答案1

至少在 Ubuntu 23.04 中(可能在早期版本的 Ubuntu 中,也许在 Debian 中也是;我记得它在几年前是可以的,但是有一段时间它不再起作用了),可以设置

export LC_TIME=en_DK.UTF-8 # note that en_DK.utf8 works too

并从区域感知程序中获取所需的行为:

$ date
Δευ 11 Σεπ 2023 01:59:09 πμ EEST
$ LC_TIME=en_DK.utf8 date
2023-09-11T01:59:17 EEST

答案2

作为参考,您可能需要先运行这些命令,也许将输出放在一边的终端中:

localectl status
locale
locale -ck d_t_fmt
locale -ck d_fmt
locale -ck t_fmt

然后在另一个终端cd /usr/share/i18n/locales

在目录中找到您正在使用的区域设置...
对我来说,那是 en_US。
将该区域设置定义文件复制到您希望使用的 custom_name。

sudo cp en_US my_en_US

使用您最喜欢的编辑器,使用所需的日期格式编辑自定义区域设置定义文件。OP 想要系统范围的日期/时间格式……好吧,系统上有多种日期/时间格式,因此如果您想要涵盖所有内容,您将在这里进行大量格式化。即日期、日期时间、时间、时间 AM/PM 格式、命令的日期date……(正如您将在定义文件中看到的那样)

我仅在这里说明上述内容之一……命令的日期格式date

sudo vi my_en_US

转到“date_fmt”行,将格式编辑为所需格式。

date_fmt“%Y-%m-%d%H:%M:%S”

注意:我读过一些说明,说你用 Unicode 值输入这种格式,例如)“<u0025><u0059> 等”...但由于在这个版本的 ubuntu 中它们不是这样的,我假设你可以只使用百分比编码...如果你的文件具有 Unicode 格式,你可以获取你想要的日期/时间字符串(百分比格式),然后通过 hexdump 运行它以获得 Unicode 等效项... echo -n "%Y-%m-%d %H:%M:%S" | hexdump或者使用这个网站https://www.branah.com/unicode-converter

保存文件并退出...编译您的语言环境定义文件并生成新的语言环境
sudo localedef -f UTF-8 -i my_en_US MY_en.UTF-8

有一些说明说将环境变量添加到 /etc/environment 或 /bashrc 等...但我所做的是sudo localectl set-locale LC_TIME=MY_en.UTF-8

当我运行命令时,它立即生效date。但你可能必须注销或重新启动,我不确定。需要重新启动的服务随着时间的推移而发生了变化(根据互联网的其余部分),因此很难解读。

您可以再次运行帖子开头的命令进行比较/故障排除。

相关内容