Linux命令 date - 顯示或設(shè)置系統(tǒng)時(shí)間與日期

2021-11-08 14:45 更新

date

顯示或設(shè)置系統(tǒng)時(shí)間與日期

概要

date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

主要用途

  • 轉(zhuǎn)換時(shí)間到選定的格式,默認(rèn)為當(dāng)前。
  • 設(shè)置系統(tǒng)時(shí)間。

參數(shù)

format:輸出的時(shí)間格式。

format可用的轉(zhuǎn)義序列如下:

%%      百分號(hào)
%a      當(dāng)?shù)乜s寫的工作日名稱(例如,Sun)
%A      當(dāng)?shù)赝暾墓ぷ魅彰Q(例如,Sunday)
%b      當(dāng)?shù)乜s寫的月份名稱(例如,Jan)
%B      當(dāng)?shù)赝暾脑路菝Q(例如,January)
%c      當(dāng)?shù)氐娜掌诤蜁r(shí)間(例如,Thu Mar  3 23:05:25 2005)
%C      世紀(jì),和%Y類似,但是省略后兩位(例如,20)
%d      一月中的一天(例如,01)
%D      日期,等價(jià)于%m/%d/%y
%e      一月中的一天,格式使用空格填充,等價(jià)于%_d
%F      完整的日期;等價(jià)于%+4Y-%m-%d
%g      ISO標(biāo)準(zhǔn)計(jì)數(shù)周的年份的最后兩位數(shù)字
%G      ISO標(biāo)準(zhǔn)計(jì)數(shù)周的年份,通常只對(duì)%V有用
%h      等價(jià)于%b
%H      小時(shí),范圍(00..23)
%I      小時(shí),范圍(00..23)
%j      一年中的一天,范圍(001..366)
%k      小時(shí),使用空格填充,范圍(0..23),等價(jià)于%_H
%l      小時(shí),使用空格填充,范圍(1..12),等價(jià)于%_I
%m      月,范圍(01..12)
%M      分鐘,范圍(00..59)
%n      換行符
%N      納秒,范圍(000000000..000000000)
%p      用于表示當(dāng)?shù)氐腁M或PM,如果未知?jiǎng)t為空白
%P      類似于%p,但用小寫表示
%q      季度,范圍(1..4)
%r      當(dāng)?shù)匾?2小時(shí)表示的時(shí)鐘時(shí)間(例如,11:11:04 PM)
%R      24小時(shí)每分鐘;等價(jià)于%H:%M
%s      自協(xié)調(diào)世界時(shí)1970年01月01日00時(shí)00分以來的秒數(shù)
%S      秒數(shù),范圍(00..60)
%t      水平制表符
%T      時(shí)間;等價(jià)于%H:%M:%S
%u      一周中的一天(1..7),1代表星期一
%U      一年中的第幾周,周日作為一周的起始(00..53)
%V      ISO標(biāo)準(zhǔn)計(jì)數(shù)周,該方法將周一作為一周的起始(01..53)
%w      一周中的一天(0..6),0代表星期天
%W      一年中的第幾周,周一作為一周的起始(00..53)
%x      當(dāng)?shù)氐娜掌诒硎荆ɡ纾?2/31/99)
%X      當(dāng)?shù)氐臅r(shí)間表示(例如,23:13:48)
%y      年份后兩位數(shù)字,范圍(00..99)
%Y      年份
%z      +hhmm格式的數(shù)值化時(shí)區(qū)格式(例如,-0400)
%:z     +hh:mm格式的數(shù)值化時(shí)區(qū)格式(例如,-04:00)
%::z    +hh:mm:ss格式的數(shù)值化時(shí)區(qū)格式(例如,-04:00:00)
%:::z   數(shù)值化時(shí)區(qū)格式,相比上一個(gè)格式增加':'以顯示必要的精度(例如,-04,+05:30)
%Z      時(shí)區(qū)縮寫(如EDT)

默認(rèn)情況下,日期用零填充數(shù)字字段;以下可選的符號(hào)可以跟在'%'后面:

-      (連字符) 不要填充相應(yīng)的字段。
_      (下劃線) 使用空格填充相應(yīng)的字段。
0      (數(shù)字0) 使用數(shù)字0填充相應(yīng)的字段。
+      用數(shù)字0填充,未來年份大于4位數(shù)字則在前面加上'+'號(hào)。
^      允許的情況下使用大寫。
#      允許的情況下將默認(rèn)的大寫轉(zhuǎn)換為小寫,默認(rèn)的小寫轉(zhuǎn)換為大寫。

在任何標(biāo)志之后都有一個(gè)可選的字段寬度,如小數(shù);然后是一個(gè)可選的修飾符,在可用的情況下,使用E來使用當(dāng)?shù)卣Z言環(huán)境的替代表示,
使用O來使用當(dāng)?shù)卣Z言環(huán)境的替代數(shù)字符號(hào)。

選項(xiàng)

長(zhǎng)選項(xiàng)與短選項(xiàng)等價(jià)

-d, --date=STRING          解析字符串并按照指定格式輸出,字符串不能是'now'。
--debug                    注釋已解析的日期,并將有疑問的用法發(fā)送到標(biāo)準(zhǔn)錯(cuò)誤。
-f, --file=DATEFILE        類似于--date; 一次從DATEFILE處理一行。
-I[FMT], --iso-8601[=FMT]  按照ISO 8601格式輸出,F(xiàn)MT可以為'date'(默認(rèn)),'hours','minutes','seconds','ns'。
                           例如:2006-08-14T02:34:56-06:00
-R, --rfc-email            按照RFC 5322格式輸出,例如: Mon, 14 Aug 2006 02:34:56 -0600
--rfc-3339=FMT             按照RFC 3339格式輸出,F(xiàn)MT可以為'date', 'seconds','ns'中的一個(gè),
                           例如:2006-08-14 02:34:56-06:00
-r, --reference=FILE       顯示文件的上次修改時(shí)間。
-s, --set=STRING           根據(jù)字符串設(shè)置系統(tǒng)時(shí)間。
-u, --utc, --universal     顯示或設(shè)置世界協(xié)調(diào)時(shí)(UTC)。
--help                     顯示幫助信息并退出。
--version                  顯示版本信息并退出。

返回值

返回狀態(tài)為成功除非給出了非法選項(xiàng)或非法參數(shù)。

例子

# 格式化輸出:
date +"%Y-%m-%d"
2009-12-07

# 輸出昨天日期:
date -d "1 day ago" +"%Y-%m-%d"
2012-11-19

# 2秒后輸出:
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31

# 傳說中的 1234567890 秒:
date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%M:%S"
# 或者
date -d@1234567890 +"%F %T"
# 輸出結(jié)果
2009-02-13 23:02:30

# 時(shí)間格式轉(zhuǎn)換:
date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
# 輸出結(jié)果
2009/12/12 00:00.00

# apache格式轉(zhuǎn)換:
date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
# 輸出結(jié)果
2009-12-05 00:00.37

# 格式轉(zhuǎn)換后時(shí)間游走:
date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
# 輸出結(jié)果
2007-12-05 00:00.37

# 時(shí)間加減操作:
date +%Y%m%d                   # 顯示年月日
date -d "+1 day" +%Y%m%d       # 顯示前一天的日期
date -d "-1 day" +%Y%m%d       # 顯示后一天的日期
date -d "-1 month" +%Y%m%d     # 顯示上一月的日期
date -d "+1 month" +%Y%m%d     # 顯示下一月的日期
date -d "-1 year" +%Y%m%d      # 顯示前一年的日期
date -d "+1 year" +%Y%m%d      # 顯示下一年的日期

# 設(shè)定時(shí)間:
date -s                         # 設(shè)置當(dāng)前時(shí)間,只有root權(quán)限才能設(shè)置,其他只能查看
date -s 20120523                # 設(shè)置成20120523,這樣會(huì)把具體時(shí)間設(shè)置成00:00:00
date -s 01:01:01                # 設(shè)置具體時(shí)間,不會(huì)對(duì)日期做更改
date -s "01:01:01 2012-05-23"   # 這樣可以設(shè)置全部時(shí)間
date -s "01:01:01 20120523"     # 這樣可以設(shè)置全部時(shí)間
date -s "2012-05-23 01:01:01"   # 這樣可以設(shè)置全部時(shí)間
date -s "20120523 01:01:01"     # 這樣可以設(shè)置全部時(shí)間

# 有時(shí)需要檢查一組命令花費(fèi)的時(shí)間:
start=$(date +%s)
nmap wangchujiang.com &> /dev/null
end=$(date +%s)
difference=$(( end - start ))
# 顯示執(zhí)行時(shí)間
echo $difference seconds.

# 當(dāng)你考慮輸出帶有時(shí)間的字符串時(shí),例如(Current time: 2019/05/19):
# 通常使用的方法:
echo "Current time: $(date +"%Y/%m/%d")"
# 另一種方法:
suffix='Current time:'
# 注意如果換成單引號(hào)就不能替換變量了。
date +"${suffix} %Y/%m/%d"

注意

  1. 該命令是GNU coreutils包中的命令,相關(guān)的幫助信息請(qǐng)查看man -s 1 date或info coreutils 'date invocation'。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)