SHELL打印两个日期之间的日期

SHELL打印两个日期之间的日期

[root@umout shell]# cat date_to_date.sh    
THIS_PATH=$(cd `dirname $0`;)
cd $THIS_PATH
##要求传入的数据格式为yyyyMMdd的两个开始和结束参数,如20170201 20170310
start_input=$1
end_input=$2

##将输入的日期转为的时间戳格式
startDate=`date -d "${start_input}" +%s`
endDate=`date -d "${end_input}" +%s`

##计算两个时间戳的差值除于每天86400s即为天数差
stampDiff=`expr $endDate - $startDate`
dayDiff=`expr $stampDiff / 86400`

##根据天数差循环输出日期
for((i=0;i<$dayDiff;i++))
do
    process_date=`date -d "${start_input} $i day" +'%Y-%m-%d'`
    echo $process_date
done

输出:

[root@nq shell]# sh date_to_date.sh 20170201 20170310
... ...
2017-02-13
2017-02-14
2017-02-15
2017-02-16
2017-02-17
2017-02-18
2017-02-19
2017-02-20
2017-02-21
2017-02-22
2017-02-23
2017-02-24
2017-02-25
2017-02-26
2017-02-27
2017-02-28
2017-03-01
2017-03-02
2017-03-03
2017-03-04
... ...

将时间转换为时间戳进行计算

[root@nq aabbcc]# cat time.sh 
#!/bin/sh
yesterday="2018-02-26"
endDate=`date -d "${yesterday}" +%s`

# 777600 9天前的时间
startDate=777600

# 获取时间中间的差
stampDiff=`expr ${endDate} - ${startDate}`

# 时间的开始点
aa=$(date +%Y%m%d -d "1970-01-01 UTC ${stampDiff} seconds")
bb=$(date +%Y%m%d -d "1970-01-01 UTC ${endDate} seconds")
echo ${aa}
echo ${bb}

输出:

20180217
20180226
posted @ 2017-10-31 15:51  叨客厨子  阅读(1101)  评论(0编辑  收藏  举报