最近要寫一個根據一個初始時間戳距離當前日期的天數來作的業務的邏輯自動化處理,搜索到下面這些經常使用日期加減法運算,值得記錄下shell
1。我須要運用的時間計算以下
ide
如:初始時間戳爲1382716418spa
time1=$(($(date +%s ) - 1382716418));it
1382716418與當前日期相差的天數days=`$time1/86400|bc`自動化
2。 下面是作一個時間加法的詳細演示class
這裏處理方法,是將基礎的時間轉變爲時間戳,而後,須要增長或者改變時間變成秒。基礎
如:1990-01-01 01:01:01 加上 1小時 20分date
處理方法以下:搜索
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 "@$time1" ); //將時間戳轉成日期時間
echo $time1
1990-01-01 02:21:01
舒適小知識:
shell 單括號運算符號:
a=$(date);等同於:a=`date`;
雙括號運算符:
a=$((1+2)) 等同於 a=`expr 1 + 2` 等同於 a=`1+2|bc`
附加知識
[root@weibin-fedora var]# echo $(date --date='3 day')
2011年 11月 04日 星期五 01:25:44 CST
[root@weibin-fedora var]# echo $(date --date='3 day ago')
2011年 10月 29日 星期六 01:26:07 CST
[root@weibin-fedora var]# echo $(date --date='3 month')
2012年 02月 01日 星期三 01:26:20 CST
[root@weibin-fedora var]# echo $(date --date='3 month ago')
2011年 08月 01日 星期一 01:26:28 CST
[root@weibin-fedora var]# echo $(date --date='3 year')
2014年 11月 01日 星期六 01:26:42 CST
[root@weibin-fedora var]# echo $(date --date='3 year ago')
2008年 11月 01日 星期六 01:26:48 CST
[root@weibin-fedora var]# echo $(date --date='3 minute ')
2011年 11月 01日 星期二 01:22:20 CST
[root@weibin-fedora var]# echo $(date --date='3 minute ago')
2011年 11月 01日 星期二 01:26:20 CST
[root@weibin-fedora var]# echo $(date --date='3 hour ago')
2011年 10月 31日 星期一 22:30:11 CST
[root@weibin-fedora var]# echo $(date --date='3 hour')
2011年 11月 01日 星期二 04:30:24 CST