date命令用于顯示或設(shè)置系統(tǒng)日期。它最常用于以不同格式打印日期和時(shí)間,并計(jì)算將來(lái)和過(guò)去的日期。
在本教程中,我們將詳解date命令的基礎(chǔ)知識(shí)。date
命令的語(yǔ)法形式是date [OPTION]... [+FORMAT]
。
date
命令默認(rèn)使用系統(tǒng)時(shí)區(qū)。要使用其他時(shí)區(qū),請(qǐng)將環(huán)境變量TZ
設(shè)置為所需時(shí)區(qū)。
要使用默認(rèn)格式顯示當(dāng)前系統(tǒng)時(shí)間和日期,請(qǐng)?jiān)诓恢付ㄈ魏芜x項(xiàng)參數(shù)運(yùn)行date
命令。
輸出將包括星期幾,月份,月份,時(shí)間,時(shí)區(qū)和年份Sat Jun 1 14:31:01 CEST 2019
。
date
date 命令時(shí)間日期格式化
date
命令的輸出,可以使用一系列格式控制字符,+
符號(hào)進(jìn)行格式化。格式控件以%
符號(hào)開(kāi)頭,并由其值代替。
%Y
字符將會(huì)被年份替換,%m
將會(huì)被月份替換,%d
與將會(huì)被天替換,命令輸出將會(huì)是這樣Year: 2019, Month: 06, Day: 02
。
date +"Year: %Y, Month: %m, Day: %d"
Year: 2019, Month: 06, Day: 02
date "+DATE: %D%nTIME: %T"
DATE: 12/26/22
TIME: 11:30:05
這是一些最常見(jiàn)的格式字符。
%a
是星期幾的簡(jiǎn)稱,例如命令date "+%a"
,見(jiàn)會(huì)打印的是Mon。
%A
是星期幾的全稱,例如命令date "+%A"
將會(huì)打印Monday。
%b
是月份的簡(jiǎn)寫,例如命令date "+%b"
將會(huì)打印Jan。
%B
月份的全稱,例如命令date "+%B"
將會(huì)打印December。
%d
當(dāng)前日期的天數(shù),例如命令date "+%d"
將會(huì)打印26。
%D
是完整的月/日/年的簡(jiǎn)寫,例如命令date "+%D"
將會(huì)打印12/26/22。
%H
是24小時(shí)制00..23
,例如命令date "+%H"
將會(huì)打印12。
%I
是12小時(shí)制01..12
,例如命令date "+%I"
將會(huì)打印12。
%j
一年中的某天001..366
,例如命令date "+%j"
將會(huì)打印360。
%m
是月份01..12
,例如命令date "+%m"
將會(huì)打印12。
%M
是分鐘00..59
,例如命令date "+%M"
將會(huì)打印45。
%S
是00..60
秒,例如命令date "+%S"
將會(huì)打印21。
%u
是1..7
的星期幾。例如命令date "+%u"
將會(huì)打印1。
%Y
是當(dāng)前數(shù)字年份,例如命令date "+%Y"
將會(huì)打印2022。
要獲取所有格式選項(xiàng)的完整列表,請(qǐng)?jiān)谀慕K端上運(yùn)行date --help
或運(yùn)行man date
。
格式化日期時(shí)間
-d
選項(xiàng)允許您使用指定日期進(jìn)行操作。可以將日期解釋為易于理解的日期字符串,也可以指定自定義的格式。
日期字符串還可以接受諸如“tomorrow”, “friday”, “l(fā)ast friday” “next friday”, “next month”, “next week”等值。
由于date
命令默認(rèn)使用系統(tǒng)時(shí)區(qū)。要使用其他時(shí)區(qū),請(qǐng)將環(huán)境變量 TZ
設(shè)置為所需時(shí)區(qū)。
要列出所有可用時(shí)區(qū),可以列出/usr/share/zoneinfo
目錄文件或運(yùn)行命令timedatectl list-timezones
。
date -d '16 Dec 1974' +'%A, %d %B %Y'
date -d "last week"
date -d 'TZ="Australia/Sydney" 06:30 next Monday'
Unix 時(shí)間戳轉(zhuǎn)換器
date
命令可用作紀(jì)元轉(zhuǎn)換器,也就是Unix時(shí)間戳。Unix時(shí)間戳是自1970年1月1日UTC時(shí)間00:00:00起經(jīng)過(guò)的秒數(shù)。
要打印從紀(jì)元到當(dāng)前日期的秒數(shù),請(qǐng)使用date
命令%s
格式控件,也就是命令date +%s
。
要將紀(jì)元以來(lái)的秒轉(zhuǎn)換為日期,請(qǐng)使用date
命令的-d
選項(xiàng),并在Unix時(shí)間戳添加前綴@
。
date +%s
date -d @1234567890
Sat Feb 14 00:31:30 CET 2009
日期與文件名
date
命令最常用于創(chuàng)建包含當(dāng)前時(shí)間和日期的文件名。例如使用日期作為文件名創(chuàng)建Mysql備份文件。
要在Shell腳本中使用date
命令的時(shí)間作為文件名,一種方式創(chuàng)建日期時(shí)間的變量然后作為文件名稱。
例如命令date_now=$(date "+%F-%H-%M-%S")
格式化日期并分別給date_now
變量。
當(dāng)然也可以直接在文件名中使用date命令的格式化日期作為文件名稱,例如命令mysqldump database_name > database_name-$(date +%Y%m%d).sql
。
date_now=$(date "+%F-%H-%M-%S")
mysqldump database_name > database_name-$(date +%Y%m%d).sql
文件最后修改時(shí)間
date
命令的-r
選項(xiàng)也可以用于打印文件的最后修改時(shí)間。例如命令date -r etc/hosts
打印etc/hosts
文件最后修改時(shí)間。
如果要修改文件時(shí)間戳,請(qǐng)使用touch
命令。
date -r etc/hosts
設(shè)置系統(tǒng)時(shí)間和日期
通常不建議使用date
命令手動(dòng)設(shè)置系統(tǒng)時(shí)間和日期,因?yàn)樵诖蠖鄶?shù)Linux發(fā)行版中,系統(tǒng)時(shí)鐘使用ntp
或systemd-timesyncd
服務(wù)進(jìn)行同步。
但是,如果要手動(dòng)設(shè)置系統(tǒng)時(shí)鐘,可以使用date命令的--set
選項(xiàng)。
例如命令date --set="20190601 17:30"
將日期和時(shí)間設(shè)置為2019年6月1日下午5:30。
結(jié)論
至此,您應(yīng)該對(duì)如何在Linux使用date命令有一個(gè)很好的了解。
-
Linux
+關(guān)注
關(guān)注
87文章
11336瀏覽量
210099 -
命令
+關(guān)注
關(guān)注
5文章
694瀏覽量
22071
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論