UNIX/Linux 中的日期和時間戳
Niraj Menon
2023年1月30日
日期和時間資訊在命令列上並不像在圖形版本的 Linux 中那樣可見,但我們當然可以使用 date
命令獲取該資訊。
本教程將解釋如何使用 date
命令獲取、解析、轉換日期和時間,並在 Linux 上以不同的格式列印它們,假設使用 Bash shell 命令列。
在 Linux 中獲取當前日期和時間
如圖所示,執行 date
會為我們提供當前日期和時間以及時區。
user@linux:~$ date
Tue 01 Jan 2022 12:00:00 AM +04
預設日期時間格式將採用你所在的時區 - 在這種情況下,date
的輸出適用於時區為海灣標準時間或 GMT+04
的使用者。要以不同的格式列印日期和時間,例如 UTC 或 GMT,或 yyyy/mm/dd 或 dd/mm/yyyy
,你可以使用以下特殊修飾符指定該格式。
# to print the current date in dd/mm/yyyy format
date +%d-%m-%Y
# to print the current date and time in UTC
date -u
# to print the date and/or time as per IETF RFC3349
date --rfc-3339=seconds
# to print the date and time within a custom string
date +"Today is %D and the time is %I:%M:%S"
UNIX 時間
在大多數 UNIX 系統中,當前時間儲存為自特定時刻以來經過的時間以簡化,將時間保持為長整數,稱為 UNIX 紀元。所有 UNIX 系統普遍接受的時刻是 January 1st 1970, 12:00:00 AM
。這稱為 UNIX 時間戳,並被所有現代 UNIX/Linux 系統識別。
例如,如果我們希望找到 2022 年 1 月 1 日的 UNIX 時間戳,我們可以使用 date
命令。
user@linux:~$ date -d"1 January 2022 12:00 AM" +%s
1640980800
date
嘗試將字串解析為格式化的日期和時間(或者,如果未指定時間戳,則假定時間為上午 12:00),然後列印出給定日期和/或時間的 UNIX 時間戳形式。1640980800 是自 1970 年 1 月 1 日凌晨 12:00:00 以來經過的確切秒數。
反過來也是可能的,我們採用 UNIX 時間戳並將其轉換為日期表示。為了取回我們的原始日期,我們可以傳遞如圖所示的 UNIX 時間戳來轉換它。
user@linux:~$ date -d @1640980800
Sat 01 Jan 2022 12:00:00 AM +04
如果我們願意,我們還可以包含其他引數來以特定方式格式化日期,例如 UTC 或 GMT,如上所述。