1. 第一种方式
先把日期转换为秒数,对这个秒数进行加减操作(加上或者减去几天的秒数),在转换为日期
#! /bin/sh
function nextDayOfDay2 {
start=$1
days=$2
# 日期转换为秒数
seconds=`date -d $1 +%s`
echo "日期秒数 -----> "${seconds}
declare -i index
index=0
while [ ${index} -lt ${days} ]
do
total_seconds=$((seconds + ${index}*86400))
date=`date -d @${total_seconds} +'%Y%m%d'`
echo ${index}" ------> "${date}
index=${index}+1
done
}
nextDayOfDay2 $1 $2
xiaosi@Qunar:~/company/sh$ bash date.sh 20160629 5
日期秒数 -----> 1467129600
0 ------> 20160629
1 ------> 20160630
2 ------> 20160701
3 ------> 20160702
4 ------> 20160703
2. 第二种方式
#! /bin/sh
function nextDayOfDay()
{
start=$1
days=$2
startDay=`date +'%Y%m%d' -d ${start}`
echo "日期 -----> "${startDay}
declare -i index
index=0
while [ ${index} -lt ${days} ]
do
date=`date -d "${startDay} ${index} days" +"%Y%m%d"`
echo ${index}" ------> "${date}
index=${index}+1
done
}
nextDayOfDay $1 $2
打印从20160629号开始的连续5天日期:
xiaosi@Qunar:~/company/sh$ bash date.sh 20160629 5
日期 -----> 20160629
0 ------> 20160629
1 ------> 20160630
2 ------> 20160701
3 ------> 20160702
4 ------> 20160703