java 区间覆盖之日期覆盖某日期区间

整体逻辑

final List<RDSfzrdxxbVO> rdsfzrdxxbVOList = RDSfzrdxxUtils.queryNsrSfzrdxxA1(rdcxvo);
        final SwordSortUtils.SortDescription ascDm = new SwordSortUtils.SortDescription("rdyxqq", SwordSortUtils.OrderType.ASC);
        final SwordSortUtils.SortDescription[] asc = { ascDm };
        SwordSortUtils.sortBeanList(rdsfzrdxxbVOList, asc);
        final Calendar calendar = Calendar.getInstance();
        Date sksqq = skssqq;
        final Date sksqz = skssqz;
        String reCode = "";
        for (RDSfzrdxxbVO rdSfzrdxxbVO : rdsfzrdxxbVOList) {
            final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
            final Date startDate = simpleDateFormat.parse(rdSfzrdxxbVO.getRdyxqq());
            final Date endDate = simpleDateFormat.parse(rdSfzrdxxbVO.getRdyxqz());
            if (sksqq.after(startDate) || sksqq.equals(startDate)) {
               calendar.setTime(endDate);//设置开始改变日期的世界
                calendar.add(calendar.DATE,1);//设置改变日期的形式
                //往后推一天,满足下一段有效期起。进行下一阶段区间覆盖
                sksqq = calendar.getTime();
                //判断区间结束日期是否被覆盖
                if (sksqq.after(sksqz) || sksqq.equals(sksqz)) {
                    reCode = "1";
                } else {
                    reCode = "0";
                }
            } else {
                reCode = "0";
            }
        }
        return reCode;

分段解析
做一次顺序排序

final SwordSortUtils.SortDescription ascDm = new SwordSortUtils.SortDescription("rdyxqq", SwordSortUtils.OrderType.ASC);
        final SwordSortUtils.SortDescription[] asc = { ascDm };
        SwordSortUtils.sortBeanList(rdsfzrdxxbVOList, asc);

获取数据为String需要转化为Date型

final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
            final Date startDate = simpleDateFormat.parse(rdSfzrdxxbVO.getRdyxqq());
            final Date endDate = simpleDateFormat.parse(rdSfzrdxxbVO.getRdyxqz());

通过结束日期覆盖期起日期进行区间覆盖

if (sksqq.after(startDate) || sksqq.equals(startDate)) {
                calendar.setTime(endDate);//设置开始改变日期的世界
                calendar.add(calendar.DATE,1);//设置改变日期的形式
                //往后推一天,满足下一段有效期起。进行下一阶段区间覆盖
                sksqq = calendar.getTime();
                //判断区间结束日期是否被覆盖
                if (sksqq.after(sksqz) || sksqq.equals(sksqz)) {
                    reCode = "1";
                } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值