前提:
计算上周、上月的内容,比如总笔数、交易总金额
在处理需求时,需求方提出了一个周不能跨月的要求,举个例子:
20190527~20190602是一个自然周
那么要求是在20190603那天计算上周时,只计算20190601~20190602区间的,20190527~20190531这几天并入上一个月的计算
思路:
1、shell生成的上周周一、上周周日的时间;
2、截取周一、周日截止月的位置,即排除日;
3、判断周一、周日是否相等,即是否跨月:
- 相等,则开始日期为周一的日期,结束日期为周日的日期;
- 不相等,则开始日期为周日的月份拼接 01,结束日期为周日的日期。
last_monday_str=$1
last_sunday_str=$2
#判断周一、周日的年月是否相同,若相同,不做任何处理;若不同,则取周日的年月+01为开始日期,周日为结束日期
start_date=${last_monday_str:0:6}
end_date=${last_sunday_str:0:6}
echo "start_date:"$start_date
echo "end_date:"$end_date
#比较
if [ "$start_date" == "$end_date" ]
then
start_date=$last_monday_str
end_date=$last_sunday_str
else
start_date=$end_date"01"
end_date=$last_sunday_str
fi
echo $start_date
echo $end_date
PS:上周一、上周日生成
#!/usr/bin/env bash
OFDAY="`date "+%u"`"
STEPOFDAY="`expr $OFDAY + 6`"
last_monday="`date -d '-'$STEPOFDAY' day' "+%Y-%m-%d"`"
last_sunday="`date -d '-'$OFDAY' day' "+%Y-%m-%d"`"