shell 日期轉換
場景:工作中經常會碰到資料重刷,定時排程等等,不如寫個腳本讓其自動運作吧,但是要設定日期,中間時常需要進行日期轉換,下面我就簡單說說
常見的如:目前日期加減1天,1月等等
1.根據系統時間相加減
擷取系統目前日期:`date +%Y%m%d`
傳回結果:20140201
擷取系統目前日期後一天:`date -d "+1 day" +%Y%m%d`
傳回結果:20140202
擷取系統目前日期前一天:`date -d "-1 day" +%Y%m%d`
傳回結果:20140131
擷取系統目前日期後一月:`date -d "+1 month" +%Y%m`
傳回結果:201403
擷取系統目前日期前一月:`date -d "-1 month" +%Y%m`
傳回結果:201401
2.根據給定時間相加減
擷取特定日期:`date -d "20140201" +%Y%m%d`
特定日期加一天:`date -d "20140201 +1 day" +%Y%m%d`
特定日期加一月[到天]:`date -d "20140201 +1 month" +%Y%m%d`
傳回結果:20140301
特定日期加一月[到月]:`date -d "20140201 +1 month" +%Y%m`
傳回結果:201403
ps:如果需要取N天前或者N天後的資料,隻需要加N天or減N天
如:特定日期後10天:`date -d "20140201 +10 day" +%Y%m%d`
傳回結果:20140211
下面是date的格式:可根據需要自行設定
% H 小時(00..23)
% I 小時(01..12)
% k 小時(0..23)
% l 小時(1..12)
% M 分(00..59)
% p 顯示出AM或PM
% r 時間(hh:mm:ss AM或PM),12小時
% s 從1970年1月1日00:00:00到目前經曆的秒數
% S 秒(00..59)
% T 時間(24小時制)(hh:mm:ss)
% X 顯示時間的格式(%H:%M:%S)
% Z 時區 日期域
% a 星期幾的簡稱( Sun..Sat)
% A 星期幾的全稱( Sunday..Saturday)
% b 月的簡稱(Jan..Dec)
% B 月的全稱(January..December)
% c 日期和時間( Mon Nov 8 14:12:46 CST 1999)
% d 一個月的第幾天(01..31)
% D 日期(mm/dd/yy)
% h 和%b選項相同
% j 一年的第幾天(001..366)
% m 月(01..12)
% w 一個星期的第幾天(0代表星期天)
% W 一年的第幾個星期(00..53,星期一為第一天)
% x 顯示日期的格式(mm/dd/yy)
% y 年的最後兩個數字( 1999則是99)
% Y 年(例如:1970,1996等)