获取时间操作
- /* date 获取参数 */
- CUR_DATE=`date -d "-1 day" +%Y-%m-%d` CUR_PARTITION=`date -d "-1 day" +%Y%m%d` BEGIN_PARTITION=`date -d "-1 day" +%Y%m%d` END_PARTITION=`date -d "-1 day" +%Y%m%d` BEGIN_DATE=`date -d "-1 day" +%Y-%m-%d` END_DATE=`date -d "-1 day" +%Y-%m-%d`
- /* 根据指定的时间去获取日期时间,format_day格式为 20171204 */
- format_day=`echo $1|grep -o '[0-9]\{8\}'` format_hour=`echo $1|grep -o '[0-9]\{2\}$'` CUR_DATE=`date -d "$format_day" +%Y-%m-%d` CUR_PARTITION=`date -d "$format_day" +%Y%m%d` LAST_MONTH=`date -d "${format_day} -1 month" +%Y%m` BEGIN_DATE=`date -d "${format_day}" +%Y-%m-%d` END_DATE=`date -d "${format_day}" +%Y-%m-%d` BEGIN_PARTITION=`date -d "${format_day}" +%Y%m%d` END_PARTITION=`date -d "${format_day}" +%Y%m%d`
获取指定开始结束时间内的所有日期
会循环例举所有的自然月天数,日期按照标准天数,比如2月只到28/29号
- #!/bin/bash
- #以天做循环
- #20170101 20170103
-
- stime=$1
- etime=$2
- while :
- do
- stime=$(date -d "$stime 1day" +%Y%m%d)
- echo $stime
- if [[ $stime -gt $etime ]]; then
- break;
- fi
- done
举例:
- sh getDate.sh 20170125 20170416
- 运行结果:
- 20170126
- ...
- 20170228
- 20170301
- 20170302
- ...
- 20170416
- 20170417
改善脚本,使得打印出来的时间在输入时间范围之内(包括输入的时间)
- #!/bin/bash
- #以天做循环
- #20170101 20170103
-
- stime=$1
- etime=$2
- while :
- do
- stime=$(date -d "$stime 1day" +%Y%m%d)
- format_day=`echo $stime|grep -o '[0-9]\{8\}'`
- result_day=`date -d "${format_day} -1 day" +%Y%m%d`
- echo $result_day
- if [[ $result_day -eq $etime ]]; then
- break;
- fi
- done
-
- 测试: sh getDate.sh 20170129 20170302
- 20170129
- 20170130
- ...
- 20170228
- 20170301
- 20170302