linux date命令

linux date命令

在linux環境下要取得幾天前的時期只要使用

date -d "x days ago" +%Y%m%d

x用數字代替,如果需要幾天前的直接寫正數,如果要幾天後的日期直接寫負數即可;

date -d "x weeks ago" +%Y%m%d

x用數字代替,如果需要幾周前的直接寫正數,如果要幾周後的日期直接寫負數即可;

date -d "x years ago" +%Y%m%d

x用數字代替,如果需要幾年前的直接寫正數,如果要幾年後的日期直接寫負數即可;

看下面例子:

[root@showsky ~]# date +%Y%m%d
20100107

上面是今天的日期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'         

 

Tue Dec  1 23:20:00 CST 2009

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
 

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