/***
* 获取时间区间 月份开始|结束 时间列表
* 示例
* param
* startLocalDateTime 2020-03-02 12:22:22
* endLocalDateTime 2020-05-22 18:18:18
* return
* 2020-03-02 12:22:22,2020-03-31 23:59:59.999
* 2020-04-01 00:00:00,2020-04-30 23:59:59.999
* 2020-05-01 00:00:00,2020-05-22 18:18:18
* @param startLocalDateTime
* @param endLocalDateTime
* @return
*/
public static List<LocalDateTime[]> getLocalDateTimeIntervalMonthStartEndTime(LocalDateTime startLocalDateTime,LocalDateTime endLocalDateTime){
if (startLocalDateTime.isAfter(endLocalDateTime)){
LocalDateTime temp=startLocalDateTime;
startLocalDateTime=endLocalDateTime;
endLocalDateTime=temp;
}
List<LocalDateTime[]> localDateTimeList=new ArrayList<>();
LocalDateTime currDateTime=startLocalDateTime;
LocalDateTime currMonthEndDateTime = LocalDateTime.of(LocalDate.of(currDateTime.getYear(),currDateTime.getMonth(),currDateTime.getDayOfMonth()), LocalTime.MAX).with(TemporalAdjusters.lastDayOfMonth());
if (currMonthEndDateTime.isBefore(endLocalDateTime)) {
localDateTimeList.add(new LocalDateTime[]{currDateTime, currMonthEndDateTime});
} else {
localDateTimeList.add(new LocalDateTime[]{startLocalDateTime, endLocalDateTime});
}
do{
currDateTime = LocalDateTime.of(LocalDate.of(currDateTime.getYear(),currDateTime.getMonth(),currDateTime.getDayOfMonth()), LocalTime.MIN).with(TemporalAdjusters.firstDayOfNextMonth());
currMonthEndDateTime = LocalDateTime.of(LocalDate.of(currDateTime.getYear(),currDateTime.getMonth(),currDateTime.getDayOfMonth()), LocalTime.MAX).with(TemporalAdjusters.lastDayOfMonth());
if (currMonthEndDateTime.isBefore(endLocalDateTime)) {
localDateTimeList.add(new LocalDateTime[]{currDateTime, currMonthEndDateTime});
} else {
if (currDateTime.isBefore(endLocalDateTime)) {
localDateTimeList.add(new LocalDateTime[]{currDateTime, endLocalDateTime});
}
}
}while(currMonthEndDateTime.isBefore(endLocalDateTime));
return localDateTimeList;
}