天天看點

每天一個Linux指令(34):date

在linux中,不管是程式設計還是其他維護,會經常用到時間的運算。熟練運用date來表示自己想要表示的時間,可以給自己的工作帶來諸多友善。

1. 指令格式

date [參數] [格式]           

2. 指令功能

用來顯示或設定系統日期與時間           

3. 指令參數

必要參數

%H,小時(以00-23來表示)。

%I,小時(以01-12來表示)。

%K,小時(以0-23來表示)。

%l,小時(以0-12來表示)。

%M,分鐘(以00-59來表示)。

%P,AM或PM。

%r,時間(含時分秒,小時以12小時的AM/PM來表示)。

%s,總秒數,起算時間為1970-01-01 00:00:00 UTC。

%S,秒(以本地的慣用法來表示)。

%T,時間(含時分秒,小時以24小時制來表示)。

%X,時間(以本地的慣用法來表示)。

%Z,時區。

%a,星期的縮寫。

%A,星期的完整名稱。

%b,月份英文名的縮寫。

%B,月份的完整英文名稱。

%c,日期與時間。隻輸入date指令也會顯示同樣的結果。

%d,日期(以01-31來表示)。

%D,日期(含年月日)。

%j,該年的第幾天。

%m,月份(以01-12來表示)。

%U,該年的周數。

%w,該周的天數,0代表周日,1代表周一,依此類推。

%x,日期(以本地的慣用法來表示)。

%y,年份(以00-99來表示)。

%Y,年份(以四位數來表示)。

%n,在顯示時,插入新的一行。

%t,在顯示時,插入tab。

MM,月份(必要)

DD,日期(必要)

hh,小時(必要)

mm,分鐘(必要)

ss,秒(選擇性)

選擇參數

-d <字元串>,顯示字元串所指的日期與時間,字元串前後必須加上雙引号。

-s <字元串>,根據字元串來設定日期與時間,字元串前後必須加上雙引号。

-u,顯示GMT。

–help,線上幫助。

–version,顯示版本資訊

4. 使用說明

4. 1 在顯示方面,使用者可以設定欲顯示的格式,格式設定為一個加号後接數個标記,其中可用的标記清單如下

%,列印出 %

%n,下一行

%t,跳格

%H,小時(00..23)

%I,小時(01..12)

%k,小時(0..23)

%l,小時(1..12)

%M,分鐘(00..59)

%p,顯示本地 AM 或 PM

%r,直接顯示時間 (12 小時制,格式為 hh:mm:ss [AP]M)

%s,從 1970 年 1 月 1 日 00:00:00 UTC 到目前為止的秒數

%S,秒(00..61)

%T,直接顯示時間 (24 小時制)

%X,相當于 %H:%M:%S

%Z,顯示時區 %a : 星期幾 (Sun..Sat)

%A,星期幾 (Sunday..Saturday)

%b,月份 (Jan..Dec)

%B,月份 (January..December)

%c,直接顯示日期與時間

%d,日 (01..31)

%D,直接顯示日期 (mm/dd/yy)

%h,同 %b

%j,一年中的第幾天 (001..366)

%m,月份 (01..12)

%U,一年中的第幾周 (00..53) (以 Sunday 為一周的第一天的情形)

%w,一周中的第幾天 (0..6)

%W,一年中的第幾周 (00..53) (以 Monday 為一周的第一天的情形)

%x,直接顯示日期 (mm/dd/yy)

%y,年份的最後兩位數字 (00.99)

%Y,完整年份 (0000..9999)

4.2 在設定時間方面

date -s,設定目前時間,隻有root權限才能設定,其他隻能檢視。

date -s 20080523,日期設定成20080523,這樣會把具體時間設定成空00:00:00

date -s 01:01:01,設定具體時間,不會對日期做更改

date -s “01:01:01 2008-05-23″,這樣可以設定全部時間

date -s “01:01:01 20080523″,這樣可以設定全部時間

date -s “2008-05-23 01:01:01″,這樣可以設定全部時間

date -s “20080523 01:01:01″,這樣可以設定全部時間

4.3 加減

date +%Y%m%d,顯示當天年月日

date +%Y%m%d –date=”+1 day”,顯示前一天的日期

date +%Y%m%d –date=”-1 day”,顯示後一天的日期

date +%Y%m%d –date=”-1 month”,顯示上一月的日期

date +%Y%m%d –date=”+1 month”,顯示下一月的日期

date +%Y%m%d –date=”-1 year”,顯示前一年的日期

date +%Y%m%d –date=”+1 year”,顯示下一年的日期

5. 使用執行個體

例一:顯示目前時間

指令:

date
date '+%c'
date '+%D'
date '+%x'
date '+%T'
date '+%X'           
# date
2012年 12月 08日 星期六 08:31:35 CST

# date '+%c'
2012年12月08日 星期六 08時34分44秒

# date '+%D'
12/08/12

# date '+%x'
2012年12月08日

# date '+%T'

# date '+%X'
08時35分54秒           

例二:顯示日期和設定時間

指令:

date --date 08:42:00

# date '+%c'
2012年12月08日 星期六 08時41分37秒

# date --date 08:42:00
2012年 12月 08日 星期六 08:42:00 CST

# date '+%c' --date 08:45:00
2012年12月08日 星期六 08時45分00秒           

例三:使用-d參數

# date -d "nov 22"
2012年 11月 22日 星期四 00:00:00 CST

# date -d '2 weeks'
2012年 12月 22日 星期六 08:50:21 CST

# date -d 'next monday'
2012年 12月 10日 星期一 00:00:00 CST

#  date -d next-day +%Y%m%d
20121209

# date -d tomorrow +%Y%m%d
20121209

# date -d last-day +%Y%m%d
20121207

# date -d yesterday +%Y%m%d
20121207

# date -d last-month +%Y%m
201211

# date -d next-month +%Y%m
201301

# date -d '30 days ago' 
2012年 11月 08日 星期四 08:51:37 CST

# date -d '-100 days' 
2012年 08月 30日 星期四 08:52:03 CST

#  date -d 'dec 14 -2 weeks'
2012年 11月 30日 星期五 00:00:00 CST

# date -d '50 days'
2013年 01月 27日 星期日 08:52:27 CST           

說明:date的另一個擴充是-d選項,使用這個功能強大的選項,用引号将日期括起來作為參數,您可以快速地檢視一個特定的日期。-d選項還可以告訴您,相對于目前日期若幹天以前是哪一天,從現在開始的若幹天或若幹星期以後是哪一天。

date -d "nov 22",今年的11月22日是周幾

date -d '2 weeks',檢視2周後的日期

date -d 'next monday',檢視下周一的日期

date -d next-day +%Y%m%d 或 date -d tomorrow +%Y%m%d 檢視明天的日期

date -d last-day +%Y%m%d 或 date -d yesterday +%Y%m%d 檢視昨天的日期 

date -d last-month +%Y%m,上個月是幾月

date -d next-month +%Y%m,下個月是幾月

date -d '30 days ago',檢視30天前的日期,使用ago指令可以得到過去的日期;使用負數得到相反的日期

date -d 'dec 14 -2 weeks' (相對:dec 14這個日期的兩周前的日期)

date -d '-100 days',檢視100天以前的日期

date -d '50 days',檢視50天後的日期           

例四:顯示月份和日數

指令:

date '+%B %d'

# date '+%B %d' 

十二月 08           

例五:顯示時間後跳行,再顯示目前日期

指令:

date '+%T%n%D'

# date '+%T%n%D'

09:00:30
12/08/12           

繼續閱讀