在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