以下是一个简单的 Java 工具类,用于实现从前端传递的两个日期,然后选择的日期区间为一个月。该工具类使用 Java 8 中的 LocalDate 和 Period 类来计算日期区间。

import java.time.LocalDate;
import java.time.Period;

public class DateRange {

    public static LocalDate[] getRange(LocalDate startDate, LocalDate endDate) {
        // 如果结束日期早于开始日期,则交换它们
        if (endDate.isBefore(startDate)) {
            LocalDate temp = startDate;
            startDate = endDate;
            endDate = temp;
        }

        // 计算日期区间
        Period period = Period.between(startDate, endDate);
        int days = period.getDays();
        int months = period.getMonths();
        int years = period.getYears();

        // 如果日期区间大于一个月,则返回空数组
        if (years > 0 || (months > 0 && days > 0)) {
            return new LocalDate[0];
        }

        // 否则返回所选月份的开始和结束日期
        LocalDate start = LocalDate.of(startDate.getYear(), startDate.getMonth(), 1);
        LocalDate end = start.plusMonths(1).minusDays(1).withDayOfMonth(Math.min(startDate.getDayOfMonth(), start.lengthOfMonth()));
        return new LocalDate[]{start, end};
    }
}

使用示例:

LocalDate startDate = LocalDate.of(2021, 6, 15);
LocalDate endDate = LocalDate.of(2021, 7, 10);

LocalDate[] range = DateRange.getRange(startDate, endDate);
if (range.length == 0) {
    System.out.println('日期区间大于一个月');
} else {
    System.out.println('开始日期: ' + range[0]);
    System.out.println('结束日期: ' + range[1]);
}

输出:

开始日期: 2021-06-01
结束日期: 2021-06-30
Java 工具类:获取前端传递的日期区间(一个月)

原文地址: https://www.cveoy.top/t/topic/nwVk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录