UNIX下获取前一天后一天的日期

在Linux下-d选项

          date  +"%Y%m%d" -d  "+n days"         今天的后n天日期  

          date  +"%Y%m%d" -d  "-n days"         今天的前n天日期

在UNIX下没有’-d’选项,所以无法使用上面的方法,
参照如下shell

#!/bin/sh

#输入日期参数,不输入默认当天
if [ $# -eq 1 ]
then
   today=$1
else
   today=`date +%Y%m%d`
fi
#获取年月日
year=`echo $today|cut -c 1-4`
month=`echo $today|cut -c 5-6`
day=`echo $today|cut -c 7-8`

if [ $day -eq 1 ]
then
   month=`expr $month - 1`
   #月份减一后如果为0则为上一年,月份置12,年份减一
   [ $month -eq 0 ] && month=12 && year=`expr $year - 1`
   #获取年月日历
   aaa=`cal $month $year`
   #获取最后一天
   day=`echo $aaa|awk '{print $NF}'`
else
   day=`expr $day - 1`
fi
#如果日期只有一位则前补0
expr $day : "^.$" > /dev/null && day=0$day
expr $month : "^.$" > /dev/null && month=0$month
lastdate=$year$month$day

echo "lastdate="$lastdate

year=`echo $today|cut -c 1-4`
month=`echo $today|cut -c 5-6`
day=`echo $today|cut -c 7-8`

aaa=`cal $month $year`
bbb=`echo $aaa|awk '{print $NF}'`
[ $bbb -eq $day ] && month=`expr $month + 1` && day=0
[ $month -gt 12 ] && month=1 && year=`expr $year + 1`
day=`expr $day + 1`
expr $day : "^.$" > /dev/null && day=0$day
expr $month : "^.$" > /dev/null && month=0$month
nextdate=$year$month$day

echo "nextdate="$nextdate

exit 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值