在 Java 中,可以使用以下方法将日期段按月分割:
- 使用
Calendar
类和while
循环。首先,创建一个Calendar
对象,并将其设置为起始日期。然后,使用while
循环,每次将日期加上 1 个月,并将当前月份的范围添加到结果列表中。循环继续进行,直到日期超过结束日期为止。
List<Range> splitByMonth(Date start, Date end) {
List<Range> result = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
calendar.setTime(start);
while (calendar.getTime().before(end)) {
Date nextMonth = getNextMonth(calendar);
result.add(new Range(calendar.getTime(), nextMonth));
calendar.setTime(nextMonth);
}
return result;
}
Date getNextMonth(Calendar calendar) {
Calendar nextMonthCalendar = Calendar.getInstance();
nextMonthCalendar.setTime(calendar.getTime());
nextMonthCalendar.add(Calendar.MONTH, 1);
return nextMonthCalendar.getTime();
}