現在在我的系統上預設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_fmt "%a %e %b %Y %H:%M:%S %Z"
「2016 年 1 月 29 日星期五 22:04:26 GMT」有效
“2016 年 1 月 29 日星期五 22:04:26 GMT” 沒有
為什麼非常常用的語言環境的 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