JAVA 获取“近七天 本月 近四个季度 本年 本季度 本周”开始时间-结束时间范围

/**
     * 获取时间范围
     * <p>
     * 时间类型 1近七天 2本月 3近四个季度 4本年 5本季度 6本周
     */
    private Map<String, Date> getTypeDate(String timeType) {
        if (ObjectUtil.isEmpty(timeType)) {
            timeType = "1";
        }
        //时间类型 1近七天 2本月 3近四个季度 4本年 5本季度 6本周
        Date beginDate;
        Date endDate;
        switch (timeType) {
            case "2":
                beginDate = DateUtil.beginOfMonth(new Date());
                endDate = DateUtil.endOfMonth(new Date());
                break;
            case "3":
                Map<String, Object> nearQuarterDate = getNearQuarterDate(new Date());
                beginDate = (Date) nearQuarterDate.get("beginTime");
                endDate = new Date();
                break;
            case "4":
                beginDate = DateUtil.beginOfYear(new Date());
                endDate = DateUtil.endOfYear(new Date());
                break;
            case "5":
                beginDate = DateUtil.beginOfQuarter(new Date());
                endDate = DateUtil.endOfQuarter(new Date());
                break;
            case "6":
                beginDate = DateUtil.beginOfWeek(new Date());
                endDate = DateUtil.endOfWeek(new Date());
                break;
            default:
                //时间类型 1近七天
                beginDate = DateUtil.offsetDay(new Date(), -6);
                endDate = new Date();
                break;
        }
        Map<String, Date> map = new HashMap<>();
        map.put("beginDate", beginDate);
        map.put("endDate", endDate);
        return map;
    }
/**
     * 获取近四个季度开始时间
     *
     * @param date 指定日期
     */
    private Map<String, Object> getNearQuarterDate(Date date) {
        Map<String, Object> map = new HashMap<>();
        LocalDate localDate = DateUtil.toLocalDateTime(DateUtil.endOfQuarter(date)).toLocalDate();
        List<NearQuarterDateVO> list = new ArrayList<>();
        for (int i = 0; i < 4; i++) {
            //每个季度开始时间
            LocalDate startOfQuarter = localDate.with(IsoFields.DAY_OF_QUARTER, 1);
            //每个季度结束时间
            LocalDate endOfQuarter = localDate.with(IsoFields.DAY_OF_QUARTER, IsoFields.DAY_OF_QUARTER.range().getMaximum());
            if (i < 3) {
                //后退三个月来移动到下一个季度
                localDate = localDate.minusMonths(3);
            }
            NearQuarterDateVO quarterDate = new NearQuarterDateVO();
            quarterDate.setBeginTime(DateUtil.parse(startOfQuarter.toString()));
            quarterDate.setEndTime(DateUtil.parse(endOfQuarter.toString()));
            //获得指定日期年份和季节 格式:20131
            quarterDate.setQuarterDate(DateUtil.yearAndQuarter(DateUtil.parse(startOfQuarter.toString())));
            quarterDate.setYearName(startOfQuarter.getYear() + "");
            quarterDate.setQuarterName(DateUtil.quarter(DateUtil.parse(startOfQuarter.toString())) + "");
            list.add(quarterDate);
        }
        //前四个季度 开始时间
        map.put("beginTime", DateUtil.beginOfQuarter(DateUtil.parse(localDate.toString())));
        //年份和季节 格式:20131
        map.put("quarterList", list.stream()
                .sorted(Comparator.comparing(NearQuarterDateVO::getQuarterDate))
                .collect(Collectors.toList())
        );
        return map;
    }
@Data
public class NearQuarterDateVO {
    /**
     * 季度开始时间
     */
    private Date beginTime;

    /**
     * 季度结束时间
     */
    private Date endTime;

    /**
     * 年份和季节 格式:20131
     */
    private String quarterDate;

    /**
     * 年份
     */
    private String yearName;

    /**
     * 季度
     */
    private String quarterName;
}

仅供参考,希望对您有所帮助,感谢阅读。


注:本文章,是从各大网站、各位道友以及老师等处学习,自己总结做的一些笔记,不对的地方望海涵,如有问题,请及时联系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值