用java编写一个工具类实现从前端传过来的两个日期选择的日期区间为一个月
以下是一个简单的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
``
原文地址: http://www.cveoy.top/t/topic/cw9U 著作权归作者所有。请勿转载和采集!