1. 程式人生 > >Linux命令(50)——date命令

Linux命令(50)——date命令

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命令