date命令用于顯示或設(shè)置系統(tǒng)日期。它最常用于以不同格式打印日期和時(shí)間,并計(jì)算將來(lái)和過去的日期。
在本教程中,我們將詳解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)開頭,并由其值代替。
%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
這是一些最常見的格式字符。
%a是星期幾的簡(jiǎn)稱,例如命令date "+%a",見會(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)過的秒數(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)注
88文章
11628瀏覽量
217977 -
命令
+關(guān)注
關(guān)注
5文章
746瀏覽量
23447
發(fā)布評(píng)論請(qǐng)先 登錄
射極耦合邏輯(ECL)基礎(chǔ)知識(shí)詳解
阻抗匹配基礎(chǔ)知識(shí)詳解 簡(jiǎn)直新手的好老師超級(jí)詳細(xì)
PLC入門必看基礎(chǔ)知識(shí)
安防技術(shù)基礎(chǔ)知識(shí)名詞詳解大全
linux /Android 基礎(chǔ)知識(shí)總結(jié)大全
電源管理基礎(chǔ)知識(shí)電源管理基礎(chǔ)知識(shí)電源管理基礎(chǔ)知識(shí)

詳解date命令的基礎(chǔ)知識(shí)
評(píng)論