Linux 的 date 命令提供了很多顯示日期和時間的選項,要比你想的還要多。這是一些有用的選擇。
在 Linux 系統上,date
命令非常簡單。你鍵入 date
,日期和時間將以一種有用的方式顯示。它包括星期幾、日期、時間和時區:
$ dateTue 26 Nov 2019 11:45:11 AM EST
只要你的系統設定正確,你就會看到日期和當前時間以及時區。
但是,該命令還提供了許多選項來以不同方式顯示日期和時間資訊。例如,如果要顯示日期以便進行排序,則可能需要使用如下命令:
$ date "+%Y-%m-%d"2019-11-26
在這種情況下,年、月和日按該順序排列。請注意,我們使用大寫字母 Y
來獲得四位數的年份。如果我們使用小寫的 y
,則只會看到兩位數位的年份(例如 19)。不要讓這種做法使你錯誤地聯想到如果 %m
給你一個數位月份,%M
可能會給你月份的名稱。不,%M
將給你分鐘數。要以縮寫名稱格式獲得月份,你要使用 %b
,而對於完全拼寫的月份,則要使用 %B
。
$ date "+%b %B"Nov November
或者,你可能希望以這種常用格式顯示日期:
$ date "+%D"11/26/19
如果你需要四位數的年份,則可以執行以下操作:
$ date "+%x"11/26/2019
下面是一個可能有用的範例。假設你需要建立一個每日報告並在檔名中包含日期,則可以使用以下命令來建立檔案(可能用在指令碼中):
$ touch Report-`date "+%Y-%m-%d"`
當你列出你的報告時,它們將按日期順序或反向日期順序(如果你新增 -r
)列出。
$ ls -r Report*Report-2019-11-26Report-2019-11-25Report-2019-11-22Report-2019-11-21Report-2019-11-20
你還可以在日期字串中新增其他詳細資訊。可用的各種選項多得令人驚訝。你可以使用 date "+%q"
來顯示你所在的一年中的哪個季度,或使用類似以下命令來顯示兩個月前的日期:
$ date --date="2 months ago"Thu 26 Sep 2019 09:02:43 AM EDT
是否想知道下週四的日期?你可以使用類似 date --date="next thu"
的命令,但是要理解,對於Linux,下個週四意味著今天之後的週四。如果今天是星期三,那就是明天,而不是下週的星期四。但是,你可以像下面的第二個命令一樣指定下週的星期四。
$ date --date="next thu"Thu 28 Nov 2019 12:00:00 AM EST$ date --date="next week thu"Thu 05 Dec 2019 12:00:00 AM EST
date
命令的手冊頁列出了其所有選項。該列表多得令人難以置信,但是你可能會發現一些日期/時間顯示選項非常適合你。以下是一些你可能會發現有趣的東西。
世界標準時間(UTC):
$ date -uTue 26 Nov 2019 01:13:59 PM UTC
自 1970 年 1 月 1 日以來的秒數(與 Linux 系統上日期的儲存方式有關):
$ date +%s1574774137
以下是 date
命令選項的完整列表。正如我所說,它比我們大多數人想象的要廣泛得多。
%%
顯示字母 %%a
本地語言環境的縮寫星期名稱(例如,日 / Sun)%A
本地語言環境的完整星期名稱(例如,星期日 / Sunday)%b
本地語言環境的縮寫月份名稱(例如 一 / Jan)%B
本地語言環境的完整月份名稱(例如,一月 / January)%c
本地語言環境的日期和時間(例如 2005年3月3日 星期四 23:05:25 / Thu Mar 3 23:05:25 2005)%C
世紀;類似於 %Y
,但省略了後兩位數位(例如,20)%d
月份的天(例如,01)%D
日期;與 %m/%d/%y
相同%e
月份的天,填充字首空格;與 %_d
相同%F
完整日期;與 %Y-%m-%d
相同%g
ISO 周號的年份的後兩位數位(請參見 %G
)%G
ISO 周號的年份(請參閱 %V
);通常僅配合 %V
使用%h
與 %b
相同%H
24 小時製的小時(00..23)%I
12 小時製的小時(01..12)%j
一年的天(001..366)%k
24 小時製的小時,填充字首空格( 0..23);與 %_H
相同%l
12 小時製的小時,填充字首空格( 1..12);與 %_I
相同%m
月份(01..12)%M
分鐘(00..59)%n
換行符%N
納秒(000000000..999999999)%p
本地語言環境中等同於 AM 或 PM 的字串;如果未知,則為空白%P
像 %p
,但使用小寫%q
季度(1..4)%r
本地語言環境的 12 小時制時間(例如,晚上 11:11:04 / 11:11:04 PM)%R
24 小時製的小時和分鐘;與 %H:%M
相同%s
自 1970-01-01 00:00:00 UTC 以來的秒數%S
秒(00..60)%t
製表符%T
時間;與 %H:%M:%S
相同%u
星期(1..7);1 是星期一%U
年的周號,以星期日為一週的第一天,從 00 開始(00..53)%V
ISO 周號,以星期一為一週的第一天,從 01 開始(01..53)%w
星期(0..6);0 是星期日%W
年的周號,星期一為一週的第一天,從 00 開始(00..53)%x
本地語言環境的日期表示形式(例如,1999年12月31日 / 12/31/99)%X
本地語言環境的時間表示形式(例如,23:13:48)%y
年的最後兩位數位(00..99)%Y
年份%z
+hhmm 格式的數位時區(例如,-0400)%:z
+hh:mm 格式的數位時區(例如,-04:00)%::z
+hh:mm:ss 格式的數位時區(例如,-04:00:00)%:::z
數位時區,:
指明精度(例如,-04, +05:30)%Z
字母時區縮寫(例如,EDT)