http://www.sunjianhe.com/?p=760
使用時間戳轉換為具體格式的日期輸出,輸出格式為:date -d ’1970-01-01 UTC Timestamp seconds’ +”%Y-%m-%d %T %z”
[root@mail161-Centos ~]#date
Wed Oct 27 09:49:22 CST 2010
[root@mail161-Centos ~]#date +%s
1288144164
[root@mail161-Centos ~]#date -d ’1970-01-01 UTC 1288144164 seconds’ +”%Y-%m-%d %T %z”
2010-10-27 09:49:24 +0800
得到明天的日期:date -d “1 days” +%d 或者 date -d “tomorrow” +%d
得到昨天的日期:date -d “1 days ago” +%d或者 date -d “yesterday” +%d
得到今天的日期:date -d “0 days” +%d或者date -d “now” %d
得到今天后n天的日期:date -d “n days” +%d
得到今天前n天的日期:date -d “n days ago” +%d
其中n為具體的某個整數
類似的用法有:date -d “1 years” +%Y得到一年後是多少年
date -d “1 years ago” +%Y得到一年前是多少年
如下是在處理shell時經常用到的:
1. 時間加減
這裡處理方法,是將基礎的時間轉變為時間戳記,然後,需要增加或者改變時間,變成 秒。
如:1990-01-01 01:01:01 加上 1小時 20分
處理方法:
a.將基礎時間轉為時間戳記
time1=$(date +%s -d ’1990-01-01 01:01:01′)
echo $time1
631126861 【時間戳記】
b.將增加時間變成秒
[root@localhost ~]# time2=$((1*60*60+20*60))
[root@localhost ~]# echo $time2
4800
c.兩個時間相加,計算出結果時間
time1=$(($time1+$time2))
time1=$(date +%Y-%m-%d\ %H:%M:%S -d “1970-01-01 UTC $time1 seconds”);
echo $time1
1990-01-01 02:21:01
2. 時間差計算方法
如:2010-01-01 與 2009-01-01 11:11:11 時間差
原理:同樣轉成時間戳記,然後計算天,時,分,秒
time1=$(($(date +%s -d ’2010-01-01′) – $(date +%s -d ’2009-01-01 11:11:11′)));
echo time1
將time1 / 60 秒,就變成分了。
補充說明:
shell 單括弧運算子號:
a=$(date);
等同於:a=`date`;
雙括弧運算子:
a=$((1+2));
echo $a;
等同於:
a=`expr 1 + 2`