在終端裡按你的方式顯示日期和時間

2019-11-29 14:39:00

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)