在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命令做日期的计算了