自从更新到 Debian Buster 后,date
在终端上运行会以 AM/PM 格式显示时钟,而不是 24 小时制。这是新情况,并且发生在所有更新的安装中。
Docker 容器:
yeri@b9b3e889fd76 ~ $ date
Thu 01 Aug 2019 11:28:25 PM +08
本地主机:
liana ~ # date
Thu 01 Aug 2019 11:32:44 PM +08
数字海洋:
ui0 ~ # date
Thu 01 Aug 2019 05:33:11 PM CEST
这很烦人,而且我也没有要求这样做——但是找不到设置来更改它。
我唯一能想到的就是将语言环境设置为美国;但以前也是这种情况(Debian 9):
ui0 ~ # cat /etc/default/locale
# File generated by update-locale
LANG=en_US.UTF-8
yeri@b9b3e889fd76 ~ $ 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=en_US.UTF-8
yeri@b9b3e889fd76 ~ $ date
Sun 04 Aug 2019 04:39:14 PM +08
yeri@b9b3e889fd76 ~ $ locale date_fmt
%a %d %b %Y %r %Z
yeri@b9b3e889fd76 ~ $ locale -k LC_TIME
abday="Sun;Mon;Tue;Wed;Thu;Fri;Sat"
day="Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday"
abmon="Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec"
mon="January;February;March;April;May;June;July;August;September;October;November;December"
am_pm="AM;PM"
d_t_fmt="%a %d %b %Y %r %Z"
d_fmt="%m/%d/%Y"
t_fmt="%r"
t_fmt_ampm="%I:%M:%S %p"
era=
era_year=""
era_d_fmt=""
alt_digits=
era_d_t_fmt=""
era_t_fmt=""
time-era-num-entries=0
time-era-entries="S"
week-ndays=7
week-1stday=19971130
week-1stweek=1
first_weekday=1
first_workday=2
cal_direction=1
timezone=""
date_fmt="%a %d %b %Y %r %Z"
time-codeset="UTF-8"
alt_mon="January;February;March;April;May;June;July;August;September;October;November;December"
ab_alt_mon="Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec"
答案1
似乎这一变化的原因是 buster 中的 en_US 区域设置已更新。由于它旨在代表美国习惯,即以 12 小时格式指定时间,因此现在按此格式显示时间,尽管这可能会让所有依赖旧行为的人感到惊讶。
正如@JosefZ 在评论中提到的,一种解决方案是使用具有所需时间设置的区域设置,例如 C.UTF-8。要使此更改在 Debian 上永久生效,您需要运行:
update-locale LC_TIME=C.UTF-8
这会在文件 /etc/default/locale 中设置 LC_TIME 的定义。
您可以在以下位置找到有关更改本身的更多信息Debian 错误 #877900