Java 获取指定日期范围内的所有日期

描述

范围内全部日期

  • 昨日
  • 本周
  • 本月
  • 本季度
  • 近几日
  • 固定时间段

​​​​​​在这里插入图片描述

代码

public class DateUtils {

 public static void main(String[] args) {
        System.out.println("昨日:" + DateUtils.getYesterday());
     
        System.out.println("本周:" + DateUtils.getCurrentWeekDays());
     
        System.out.println("本月:" + DateUtils.getCurrentMonthDays());

        System.out.println("本季度:" + DateUtils.getCurrentQuarterDays());

        System.out.println("近5天:" + DateUtils.getCustomDays(5));
 
        System.out.println("固定时间段:" + DateUtils.getFixedDays(LocalDate.now().minusDays(10), LocalDate.now()));
    }
    
    // 昨日
    public List<String> getYesterday() {
        String yesterday = LocalDate.now().minusDays(1).toString();
        return Collections.singletonList(yesterday);
    }
    // 本周 七天
    public List<String> getCurrentWeekDays() {
        LocalDate now = LocalDate.now();
		WeekFields weekFields = WeekFields.ISO;
        // 周一
        LocalDate  startDate = now.with(weekFields.dayOfWeek(), 1L);
        // 周日
        LocalDate  endDate = now.with(weekFields.dayOfWeek(), 7L);
        return getAscDateList(monday, sunday);
    }
    // 本月
    public List<String> getCurrentMonthDays() {
        LocalDate now = LocalDate.now();
        // 本月1号
        LocalDate firstDayOfMonth = now.with(TemporalAdjusters.firstDayOfMonth());
        // 本月最后一天
        LocalDate lastDayOfMonth = now.with(TemporalAdjusters.lastDayOfMonth());
        return getAscDateList(firstDayOfMonth, lastDayOfMonth);
    }
    // 本季度
    public List<String> getCurrentQuarterDays() {
        // 当前季度第一天
        LocalDate startOrStartDayOfQuarter = getStartOrEndDayOfQuarter(true);
        // 当前季度最后一天
        LocalDate startOrEndDayOfQuarter = getStartOrEndDayOfQuarter(false);
        return getAscDateList(startOrStartDayOfQuarter, startOrEndDayOfQuarter);
    }
    // 近几天
    public List<String> getCustomDays(Integer nearDays) {
        LocalDate startDate = LocalDate.now().minusDays(1);
        LocalDate endDate = LocalDate.now().minusDays(nearDays);
        return getAscDateList(endDate, startDate);
    }
    // 固定时间段
    public List<String> getFixedDays(LocalDate startDate, LocalDate endDate) {
        return getAscDateList(startDate, endDate);
    }

    /**
     * 获取 两个时间内 全部日期
     *
     * @param startDate 开始日期
     * @param endDate   结束日期
     * @return {@link List}<{@link String}>
     */
    public static List<String> getAscDateList(LocalDate startDate, LocalDate endDate) {
        List<String> result = new ArrayList<>();
        if (endDate.compareTo(startDate) < 0) {
            return result;
        }
        while (true) {
            result.add(startDate.toString());
            if (startDate.compareTo(endDate) >= 0) {
                break;
            }
            startDate = startDate.plusDays(1);
        }
        return result;
    }

    /**
     * 季度开始或结束一天
     *
     * @param isFirst true 季度开始 false 季度结束
     * @return {@link LocalDate}
     */
    public static LocalDate getStartOrEndDayOfQuarter(Boolean isFirst) {
        LocalDate today = LocalDate.now();
        LocalDate resDate;
        Month month = today.getMonth();
        Month firstMonthOfQuarter = month.firstMonthOfQuarter();
        Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
        if (isFirst) {
            resDate = LocalDate.of(today.getYear(), firstMonthOfQuarter, 1);
        } else {
            resDate = LocalDate.of(today.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(today.isLeapYear()));
        }
        return resDate;
    }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值