我的系统现在默认date
输出:
$ date
Fri 29 Jan 22:04:26 GMT 2016
但是,如果我尝试将这种格式的日期输入其中,date
则会导致“无效日期”:
$ date -d "$(date)"
date: invalid date ‘Fri 29 Jan 22:06:14 GMT 2016’
我意识到我可以手动选择一种date
能够理解的格式:
$ date -d "@$(date +%s)"
Fri 29 Jan 22:08:03 GMT 2016
但我感兴趣的是为什么它输出的是一种它无法接受的格式。
答案1
我花了大约两个小时寻找这个困扰我多年的答案,终于找到了!!
默认情况下,以date
当前语言环境格式输出日期,例如en_GB.UTF-8
或en_AU.UTF-8
或de_DE.UTF-8
等
您的默认语言环境看起来与我的类似,并以以下格式显示日期:
date_fmt "%a %e %b %H:%M:%S %Z %Y"
不幸的是,这是 date 命令无法理解的少数格式之一。但是,如果可以理解非常相似的格式
date_fmt "%a %e %b %Y %H:%M:%S %Z"
“2016 年 1 月 29 日星期五 22:04:26 GMT”有效
“星期五 1 月 29 日 22:04:26 GMT 2016”不
为什么非常常用的语言环境 en_GB.UTF-8 和 en_AU.UTF-8 使用无法读取的格式date
我不知道,但很容易对其进行调整,这样它就不会再打扰你了,至少在你重新安装系统或你的定义被过度热心的更新覆盖之前不会>:-(
如何通过三个步骤自定义语言环境的日期格式
我找到了以下信息这里:
1. 检查您使用的语言区域
首先检查你的系统使用的时间和日期格式是哪个语言环境
$ locale
LANG=en_AU.UTF-8
LANGUAGE=en_AU
LC_CTYPE="en_AU.UTF-8"
LC_NUMERIC=en_AU.UTF-8
LC_TIME=en_AU.UTF-8
LC_COLLATE="en_AU.UTF-8"
LC_MONETARY=en_AU.UTF-8
LC_MESSAGES="en_AU.UTF-8"
LC_PAPER=en_AU.UTF-8
LC_NAME=en_AU.UTF-8
LC_ADDRESS=en_AU.UTF-8
LC_TELEPHONE=en_AU.UTF-8
LC_MEASUREMENT=en_AU.UTF-8
LC_IDENTIFICATION=en_AU.UTF-8
LC_ALL=
注意LC_TIME=条目。我的是澳大利亚英语:英文原文:en_AU.UTF-8你的可能是 en_GB_UTF-8
2. 编辑区域设置定义
打开终端并编辑适当的语言环境定义
$ sudo nano /usr/share/i18n/locales/{LC_Time}
例如
$ sudo nano /usr/share/i18n/locales/en_AU
向下滚动到 LC_TIME 部分,这是我的:
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"
d_t_fmt "%a %d %b %Y %T %Z"
d_fmt "%d//%m//%y"
t_fmt "%T"
am_pm "AM";"PM"
t_fmt_ampm "%I:%M:%S %p"
date_fmt "%a %e %b %Y %H:%M:%S %Z"
week 7;19971130;1
END LC_TIME
您需要更改的是date_fmt
条目
我将我的从:
date_fmt "%a %e %b %H:%M:%S %Z %Y"
改为date_fmt "%a %e %b %Y %H:%M:%S %Z"
保存文件并退出编辑器
3 重新生成您的语言环境
你可以使用以下命令重新编译语言环境定义文件:
$ sudo locale-gen
就是这样!现在,该date
命令应该默认以它本身可以接受的格式输出
$ date -d "$(date)"
Mon 17 Aug 2020 17:58:37 AWST