最近要写一个根据一个初始时间戳距离当前日期的天数来做的业务的逻辑自动化处理,搜索到下面这些常用日期加减法运算,值得记录下
1。我需要运用的时间计算如下
如:初始时间戳为1382716418
time1=$(($(date +%s ) - 1382716418));
1382716418与当前日期相差的天数days=`$time1/86400|bc`
2。 下面是做一个时间加法的详细演示
这里处理方法,是将基础的时间转变为时间戳,然后,需要增加或者改变时间变成秒。
如: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 "@$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
转载于:https://blog.51cto.com/5007260/1315542