linux date命令linux
在linux環境下要取得幾天前的時期只要使用shell
date -d "x days ago" +%Y%m%dapache
x用數字代替,若是須要幾天前的直接寫正數,若是要幾天後的日期直接寫負數便可;ide
date -d "x weeks ago" +%Y%m%dspa
x用數字代替,若是須要幾周前的直接寫正數,若是要幾周後的日期直接寫負數便可;日誌
date -d "x years ago" +%Y%m%dit
x用數字代替,若是須要幾年前的直接寫正數,若是要幾年後的日期直接寫負數便可;table
看下面例子:class
[root@showsky ~]# date +%Y%m%d
20100107date
上面是今天的日期20100107
[root@showsky ~]# date -d "2 days ago" +%Y%m%d
20100105
上面是兩天前的日期
[root@showsky ~]# date -d "4 days ago" +%Y%m%d
20100103
上面是四天前的日期
[root@showsky ~]# date -d "-1 days ago" +%Y%m%d
20100108
上面是一天後的日期
[root@showsky ~]# date -d "-2 days ago" +%Y%m%d
20100109
上面是兩天後的日期
[root@showsky ~]# date -d "1 week ago" +%Y%m%d
20091231
上面是一週前的日期
[root@showsky ~]# date -d "1 year ago" +%Y%m%d
20090107
上面是一年前的日期
今天須要寫一個shell腳原本完成apache日誌的篩選,需求很簡單,就是要把10分鐘以前的日誌找出來,而後放到另外一個文件中。shell中用 date命令對日期進行處理,但怎麼獲取10分鐘以前的時間呢,仔細看了一下help,沒有看出對時間的「運算」,有的也就是一些輸出格式的描述。但有一 個參數 -d or --date=STRING 其描述是display time described by STRING, not ‘now’,那這個STRING該怎麼寫才能夠describe我想要的時間呢,使用 n second(s)/minute(s)/hour(s)/day(s)/year(s) ago 便可,其中n支持負數,那麼就變成了以後的時間了。如:
獲取10分鐘以前的時間: date --date=「10 munites ago」
獲取10天以前的時間: date --date=「10 days ago」
獲取10分鐘以後的時間: date --date=「-10 munites ago」
獲取10天以後的時間: date --date=「-10 days ago」
這樣就實現了使用shell命令作日期的計算了
linux下對date和timestamp的互轉
1. date 到 timestamp:
$ date -d '2009-12-01 23:20' +%s
1259680800
2. timestamp 到 date
$ date -d '1970-01-01 1259680800 sec utc'
|
3. timestamp 到 UTC date
[root@CDM ~]# date -d '1970-01-01 UTC 1284117137 sec' -u
五 9月 10 11:12:17 UTC 2010
4. date,當前時間轉換爲UTC timestamp
[root@CDM ~]# date +%s
1284117146
例子:將數字轉成日期
# date -d '1970-01-01 1301538355 sec utc'
Thu Mar 31 10:25:55 CST 2011
再將這個日期轉成本身的格式 # date -d "Thu Mar 31 10:25:55 CST 2011" +%Y-%m-%d-%H:%M 2011-03-31-10:25