shell时间加减运算

最近要写一个根据一个初始时间戳距离当前日期的天数来作的业务的逻辑自动化处理,搜索到下面这些经常使用日期加减法运算,值得记录下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