Linux命令(50)——date命令
阿新 • • 發佈:2018-12-16
1.命令簡介
date命令用於按照指定格式顯示當前時間或者指定的時間,也可以設定系統時間。很多Shell腳本里面需要列印不同格式的時間或日期,以及要根據時間和日期執行操作,此時可以使用date命令來完成。在類Unix系統中,日期被儲存為一個整數,其大小為協調世界時(UTC)1970年1月1日0時0分0秒起流逝的秒數,即Unix時間戳。
2.命令格式
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
其中,FORMAT為格式控制字串,可取如下值:
%% 字元%
%a 星期的簡稱(Sun~Sat)
%A 星期的全稱(Sunday~Saturday)
%b 月的簡稱(Jan~Dec)
%B 月的全稱(January~December)
%c 日期和時間(Thu 06 Dec 2018 09:43:53 AM CST)。只輸入date指令也會顯示同樣的結果。
%C 世紀。和%Y比較像,但不顯示最後兩個數字,如20
%d 一個月的第幾天(01~31)
%D 日期,等同於%m/%d/%y,如12/06/18
%e 一個月的第幾天(1~31),單數字以空格填充,等同於%_d
%F 日期,等同於%Y-%m-%d,如2018-12-06
%g 年的最後兩個數字(yy),比如2018則輸出18,等同於%y
%G 年份( yyyy)
%h 月的簡稱(Jan~Dec),等同於%b
%H 小時,24小時制(00~23)
%I 小時,12小時制(01~12)
%j 一年的第幾天(001~366)
%k 小時,24小時制(0~23)。單數字填充空格,等同於%_H
%l 小時,12小時制(1~12)。單數字填充空格,等同於%_I
%m 月份(01~12)
%M 分鐘(00~59)
%n 換行符newline
%N 納秒nanoseconds(000000000..999999999)
%p 顯示出AM或PM
%P 顯示出am或pm
%r 顯示時間,12小時制(hh:mm:ss %p)
%R 顯示小時與分鐘,24小時制,等同於%H:%M
%s 從1970年1月1日00:00:00到目前經歷的秒數
%S 顯示秒(00~59)
%t Tab符
%T 顯示時間,24小時制(hh:mm:ss),等同於%H:%M:%S
%u 一週的第幾天( 1..7)。1表示星期一
%U 一年的第幾周,週日為每週的第一天(00..53)
%V 一年的第幾周,週一為每週的第一天(01..53)
%w 一個星期的第幾天(0~6),0代表星期天
%W 一年的第幾周,週一為每週的第一天(00..53)
%x 日期(mm/dd/yyyy),如12/06/2018
%X 時間,等同於%H:%M:%S
%y 年的最後兩個數字(2018則是18)
%Y 年(yyyy)
%z 以+hhmm格式顯示時區(如+0800)
%:z 以+hh:mm格式顯示時區(如+08:00)
%::z 以+hh:mm:ss格式顯示時區(如+08:00:00)
%Z 縮寫顯示時區名稱,如CST(China Standard Time)
%h,%b 月的簡稱(Jan~Dec)
填充字元說明:預設地,date命令以0填充數字域,以下填充字元的控制符可以跟在%後使用:
- ( hyphen,連字元):不進行填充
_ (underscore,下劃線):以空格填充
0(zero)以0填充
^ 儘可能地使用大寫輸出
# 儘可能地按照相反的大小寫進行輸出
3.命令選項
-d, --date=STRING:顯示由STRING指定的時間,而不是當前時間戳;
-f, --file=DATEFILE:顯示DATEFILE檔案中的每行時間;
-I[TIMESPEC], --iso-8601[=TIMESPEC]:以ISO 8601規範格式按照指定精度[TIMESPEC]顯示時間。TIMESPEC預設取值為"date",亦可取值'hours', 'minutes', 'seconds', 或 'ns';
-r, --reference=FILE:顯示檔案的最後修改時間
-R, --rfc-2822:以RFC-2822規定格式顯示時間,例如:Wed, 05 Dec 2018 22:10:34 +0800
--rfc-3339=TIMESPEC:以RFC 3339規定格式顯示時間,可以由TIMESPEC指明精度,TIMESPEC可取值'date', 'seconds', or 'ns'。例如:2018-12-05 22:09:59.230994842+08:00
-s, --set=STRING:設定系統時間為STRING指定的時間
-u, --utc, --universal:顯示或設定為協調世界時(UTC,Coordinated Universal Time)時間格式
--help:顯示date命令的幫助資訊
--version:顯示date命令的版本資訊
4.常用示例
(1)獲取Unix時間戳。
date +%s
1544067345
(2)將Unix時間戳轉換為可讀時間。
date -d @1483525407
Wed Jan 4 18:23:27 CST 2017
date -d @1483525407 +"%F %T"
2017-01-04 18:23:27
注意:-d後需跟合法格式的日期,所以時間戳需要新增@符以示區別。
(3)格式化輸出當前時間。
date +"%Y-%m-%d %H:%M:%S"
2018-12-06 10:57:33
#或
date +"%F %T"
(4)時間加減操作。
date +"%Y-%m-%d %H:%M:%S" //顯示當前時間
date -d "+1 day" +"%Y-%m-%d %H:%M:%S" //顯示前一天的時間
date -d "-1 day" +"%Y-%m-%d %H:%M:%S" //顯示後一天的時間
date -d "-1 month" +"%Y-%m-%d %H:%M:%S" //顯示上一月的時間
date -d "+1 month" +"%Y-%m-%d %H:%M:%S" //顯示下一月的時間
date -d "-1 year" +"%Y-%m-%d %H:%M:%S" //顯示前一年的時間
date -d "+1 year" +"%Y-%m-%d %H:%M:%S" //顯示下一年的時間
(5)普通格式轉換。
date -d "2009-12-12" +"%Y/%m/%d %H:%M:%S"
2009/12/12 00:00:00
(6)設定系統時間。
date -s "2016-11-11 00:00:00"
Fri Nov 11 00:00:00 CST 2016
date
Fri Nov 11 00:00:05 CST 2016
參考文獻
[1]man date
[2]linux命令總結之date命令