/***
*
返回六行日历系统整月之外的日期区间
*
*@paramdate
*@returnjava.time.LocalDate[]
*@throws* @Description : TODO Return date range beyond the full month calendar system
* TODO Demo :2020-10-01 --> [2020-09-27, 2020-09-30, 2020-11-01, 2020-11-07]
*@authorLiruilong
* @Date 2020/11/5 10:50
**/
public staticLocalDate[] calendarOsToDay(LocalDate date) {
LocalDate firstDayOfMonth=date.with(TemporalAdjusters.firstDayOfMonth());
LocalDate lastDayOfMonth=date.with(TemporalAdjusters.lastDayOfMonth());
LocalDate monthSaturday= date.with(TemporalAdjusters.dayOfWeekInMonth(6, DayOfWeek.SATURDAY));
LocalDate monthSunday= date.with(TemporalAdjusters.dayOfWeekInMonth(0, DayOfWeek.SUNDAY));
LocalDate[] localDate= newLocalDate[]{firstDayOfMonth,firstDayOfMonth,lastDayOfMonth,lastDayOfMonth};//整月之前
if (firstDayOfMonth.getDayOfWeek().getValue() !=DayOfWeek.SUNDAY.getValue()){
LocalDate lastMonth= LocalDate.of(date.getYear(), date.getMonthValue() == 1 ? 12 : date.getMonthValue() - 1 , 1);
localDate[0] =monthSunday;
localDate[1] =lastMonth.with(TemporalAdjusters.lastDayOfMonth());
}//整月之后
int day = (int)(localDate[3].toEpochDay() - localDate[0].toEpochDay());if (lastDayOfMonth.getDayOfWeek().getValue() !=DayOfWeek.SATURDAY.getValue()){
localDate[2] =date.with(TemporalAdjusters.firstDayOfNextMonth());
localDate[3] =monthSaturday;
}else if (day == 34){
localDate[2] =date.with(TemporalAdjusters.firstDayOfNextMonth());
localDate[3] =localDate[2].with(TemporalAdjusters.dayOfWeekInMonth(1, DayOfWeek.SATURDAY));
}else if ( day == 27){
localDate[2] =date.with(TemporalAdjusters.firstDayOfNextMonth());
localDate[3] =localDate[2].with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.SATURDAY));
}returnlocalDate;
}