Java日期工具类获取时间列表(一)

Java获取时间列表

获取时间列表

嘚吧嘚

相信很多业务都有各种报表,日报表、月报表、年报表,甚至都有小时、分钟报表😮‍💨。

要生成报表最基本的就是时间列表了,每次用的时候都写方法是不可取的,于是就搞了一个日期的工具类😏。

后续也会慢慢完善的😉。

当然了,大家也可以根据我提供的方法按照自己需求进行修改,比如传参、返回值等。

指定时间范围

获取指定时间范围内的每一天

java 复制代码
public static List<Date> getAllDatesInRange(Date startDate, Date endDate) {
    List<Date> dates = new ArrayList<>();
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(startDate);
    while (!calendar.getTime().after(endDate)) {
        dates.add(calendar.getTime());
        calendar.add(Calendar.DATE, 1);
    }
    return dates;
}

获取指定时间范围内每月的最后一天

java 复制代码
public static List<Date> getLastDaysOfMonthInRange(Date startDate, Date endDate) {
    List<Date> lastDays = new ArrayList<>();
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(startDate);
    while (!calendar.getTime().after(endDate)) {
        calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
        lastDays.add(calendar.getTime());
        calendar.add(Calendar.MONTH, 1);
    }
    return lastDays;
}

获取指定时间范围内每年的最后一天

java 复制代码
public static List<Date> getLastDaysOfYearInRange(Date startDate, Date endDate) {
    List<Date> lastDays = new ArrayList<>();
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(startDate);
    while (!calendar.getTime().after(endDate)) {
        calendar.set(Calendar.DAY_OF_YEAR, calendar.getActualMaximum(Calendar.DAY_OF_YEAR));
        lastDays.add(calendar.getTime());
        calendar.add(Calendar.YEAR, 1);
    }
    return lastDays;
}

指定结束时间

指定结束时间获取过去X天

java 复制代码
    public static List<String> getAllDates(int points, Date endDate, SimpleDateFormat format) {
        List<String> timeList = new ArrayList<>();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(endDate);

        for (int i = 0; i < points; i++) {
            calendar.add(Calendar.DATE, -1);
            Date day = calendar.getTime();
            timeList.add(0, format.format(day));
        }
        return timeList;
    }

指定结束时间获取过去X月的最后一天

java 复制代码
public static List<String> getMonthLastDay(int points, Date endDate, SimpleDateFormat format) {
    List<String> timeList = new ArrayList<>()
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(endDate);
    for (int i = 0; i < points; i++) {
        calendar.add(Calendar.MONTH, -1);

        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        calendar.set(year, month, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        Date lastDayOfMonth = calendar.getTime();

        timeList.add(0, format.format(lastDayOfMonth));
    }
    return timeList;
}

指定结束时间获取过去X年的最后一天

java 复制代码
public static List<String> getYearLastDay(int points, Date endDate, SimpleDateFormat format) {
    List<String> timeList = new ArrayList<>();
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(endDate);
    
    for (int i = 0; i < points; i++) {
        calendar.add(Calendar.YEAR, -1);

        int year = calendar.get(Calendar.YEAR);
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, Calendar
        
        Date lastDayOfYear = calendar.getTime();
        timeList.add(0, format.format(lastDayOfYear));
    }
    return timeList;
}

打完收工!!!

相关推荐
70后写java的老码农4 分钟前
Spring Boot 3.x + ShardingSphere 5.x + MyBatis-Plus 3.x:订单分库分表实战(含两个踩坑记录)
java
霸道流氓气质8 分钟前
AI 翻译插件:翻译记忆级联复用、术语混合检索与结构化质量门禁的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
斯维赤14 分钟前
OCR到底是接入第三方API 还是自己封装?
java·ocr
码智社32 分钟前
Redis 哨兵模式详解:从原理到生产实践
java·redis
救救孩子把40 分钟前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务
silvamux_1 小时前
微头条爆款体平台适配实测:把交付要求变成可计算的指标
java·线性代数·算法·决策树·矩阵
论文复现现场1 小时前
DeepSeek V4.1 Flash 和 V4 Pro 有什么区别?API 价格、性能与迁移建议
java·服务器·人工智能·python·大模型api·deepseek·deepseek v4.1
郭小李1 小时前
转发与重定向
java·服务器·数据库
你看我名字1 小时前
数眼智能 Search + Reader 实战:联网问答怎样避免“搜到了,却引用错了”
android·java·开发语言
MetaLite2 小时前
Spring Boot 加了 @Valid,嵌套参数为什么还没校验?
java·spring boot·后端