天天看點

linux shell 日期轉換

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等)