• 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
    
  • 相关阅读:
    空类型指针实践
    参数作用域实践
    内联函数实践:有疑惑未解决
    可变参数实践
    默认参数实践
    函数指针实践
    Windows下开发环境搭建
    Test
    C++ 左值与右值
    如何打包成多个资源文件
  • 原文地址:https://www.cnblogs.com/baolin2200/p/7761931.html
Copyright © 2020-2023  润新知