時間的獲取方法

date是shell中一個很重要的類,在很多場景中都會用到,例如使用時間戳作爲文件名防止衝突,使用時間字符串來記錄操作日誌等。

常用的時間操作大概有以下使用方式:

以2020年1月3日(星期五)爲例:

# 獲取星期
%a  當前locale 的星期名縮寫,中文數字(如: 五,代表星期五)  
%A  當前locale 的星期名全稱 (如: 星期五)  
%u  當前locale 的星期名縮寫,阿拉伯數字 (如: 5, 代表星期五)
%w  當前locale 的星期名縮寫,阿拉伯數字 (如: 5, 代表星期五))

#獲取月份
%b  當前locale 的月名縮寫 (如: 1,代表一月)  
%B  當前locale 的月名全稱 (如:一月)  
%m   當前月份 (01..12)  (如: 01, 表示一月)

#獲取完整時間
%c  當前locale 的日期和時間 (如:五,1/ 3 15:36:17 2020)
  
#獲取世紀
%C  世紀;比如 %Y,通常爲省略當前年份的後兩位數字之後剩餘的部分(如: 20, 表示2020年去掉年份20剩餘的部分)  

%d  按月計的日期,不足兩位補0(如: 03, 表示當前月的第三天)
%h  等於%b    
%D  按月計的日期,等於%m/%d/%y  (如: 01/03/20, 表示20年1月3日)

%e  按月計的日期,等於%_d,不足兩位的日期使用空格補齊,不再使用0補齊 
%F  完整日期格式,等價於 %Y-%m-%d (如: 2020-01-03, 表示2020年1月3日)
 
%g  ISO-8601 格式年份的最後兩位 (參見%G) (如:20,表示20年)  
%G  ISO-8601 格式年份 (參見%V),一般只和 %V 結合使用  (如: 2020, 表示2020年)


%H  24時計時法(00-23) (如: 15,表示下午三點) 
%I  12時計時法(00-12)  (例如: 3, 表示三點)
%p  當前locale 下的"上午"或者"下午",未知時輸出爲空  
%P  與%p 類似,但是輸出小寫字母 (如: p, 表示下午PM)


%j  按年計的日期(001-366) (如: 003, 表示是當前年份中的第三天) 
%k   hour, space padded ( 0..23); same as %_H  
%l   hour, space padded ( 1..12); same as %_I  

%M   當前分鐘 (00..59)  (如: 59, 表示當前時間在當前整點的第59分鐘)
%n  換行  
  
  
%r  當前locale 下的 12 小時時鐘時間 (如:11:11:04 下午)  
%R  24 小時時間的時和分,等價於 %H:%M  
%s  時間戳,自UTC 時間 1970-01-01 00:00:00 以來所經過的秒數  (如:1578038808)
%S  當前秒(00-60)  
%t  輸出製表符 Tab  
%T  時間,等於%H:%M:%S  
 
%U  一年中的第幾周,以週日爲每星期第一天(00-53) (如: 00, 表示當前年份第一週) 
%V  ISO-8601 格式規範下的一年中第幾周,以週一爲每星期第一天(01-53)  (如: 01, 表示當前年份中的第一週)
%W  一年中的第幾周,以週一爲每星期第一天(00-53) (如: 00, 表示當前年份第一週)
%w 一週中的第幾天 (如:2,表示星期二)

%x  當前locale 下的日期描述,年/月/日 (如: 2020/01/03, 表示2020年1月3日)  
%X  當前locale 下的時間描述 (如:16時15分42秒)  
%y  年份最後兩位數位 (00-99)   (如: 20, 表示當前世紀的第20個年頭)
%Y  完整年份                  (如: 2020, 表示當前是2020年)
%z  數字時區                  (如: +0800, 表示東八區)   
%Z          按字母表排序的時區縮寫 (如: CST, 表示中國CST,即東八區)

其中有幾組比較特殊的:


1.表示日期
date +%D 使用"月/日/年"表示當前時間,其中年份只年份中後兩位表示.2019年表示爲19
date +%F 使用"年-月-日"表示當前時間,其中年份只年份中完整表示.2019年表示爲2019

2.表示月份
date +%m 使用兩位阿拉伯數字表示當前月份,不足兩位的用0左側補齊. 二月表示爲:02
date +%b 相當於%_m,不足兩位數字時,使用一位數字表示.二月表示爲:2
date +%B 使用完整中文表示.二月表示爲:二月

3.表示一年中的第幾周

date +%U 使用兩位數字表示當前年份中的第幾周(00-53),使用00表示第一週,所以當前年份中的第六週表示爲:05
date +%V 同%U
date +%W 使用兩位數字表示當前年份中的第幾周(01-54),使用01表示第一週,所以當前年份中的第六週表示爲:06


4.表示星期
date +%a 使用單箇中文數字表示當前星期幾,週三表示爲:三
date +%A 使用完整中文表示當前星期幾,週三表示爲:星期三
date +%u 使用單個阿拉伯數字表示當前星期幾(與%w相同),週三表示爲:3
date +%w 使用單個阿拉伯數字表示當前星期幾(與%u相同),週三表示爲:3


5.表示時:分:秒
date +%r  使用12時計時法表示時鐘時間(後邊會出現 上午|下午)
date +T   使用24時計時法表示時鐘時間(與%r的區別就是:後邊不會出現 上午|下午)


6. 表示當前的時鐘正點數
24時表示法:
date +%H 使用兩位數字表示當前時鐘數,不足位補0
date +k 相當於%_H,即當前時鐘小於10時,只使用一位數字表示;不大於10時,使用兩位數字表示
12時表示法:
date +%I 使用兩位數字表示當前時鐘數,不足兩位的使用0補齊
date +%l 相當於%_I,當前時鐘數不足兩位數字時使用一位數字表示



  • 以 "YYYYmmddHHMMSS" 的格式作爲文件名:
fileName=`date "+%Y%m%d%H%M%S"`
#或者使用以下方式
fileName=$(date "+%Y%m%d%H%M%S")

  • 以 "YYYY-mm-dd HH:MM:SS: 星期X" 的格式作爲執行日誌的第一條信息:
logMessage=`date +"%Y-%m-%d %H:%M:%S %A"`

#或者 
logMessage=`date "+%F %H:%M:%S %A"`

#或者
logMessage=`date "+%F %T %A"`
  • 以 "時間戳.ipa" 作爲每次打包的文件名:
ipaName=`date +%s`
ipaFullName=${ipaName}.ipa
  • 以 "HH:MM:SS" 的形式顯示當前時間
timeString=`date "+%H:%M:%S"`
#或者
timeString=`date "+%T"`
  • 以  "YYYY年mm月dd日 HH時MM分SS秒" 形式展示日期:
timeMessage=`date "+%Y年%m月%d日 %H時%M分%S秒"`
或者
timeMessage=`date "+%Y年%m月%d日 %X"`

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章