public static String getLastWorkingDayOfPreviousMonth() {
LocalDate lastDayOfCurrentMonth = LocalDate.now().with(TemporalAdjusters.lastDayOfMonth());
LocalDate lastWorkingDayOfMonth;
switch (DayOfWeek.of(lastDayOfCurrentMonth.get(ChronoField.DAY_OF_WEEK))) {
case SATURDAY:
lastWorkingDayOfMonth = lastDayOfCurrentMonth.minusMonths(1);
break;
case SUNDAY:
lastWorkingDayOfMonth = lastDayOfCurrentMonth.minusMonths(2);
break;
default:
lastWorkingDayOfMonth = lastDayOfCurrentMonth;
}
return getFormattedDate(lastWorkingDayOfMonth);
}
The above gives last working day of the current month. How can I get the last working day of the Previous
month adjusting the above?
lastWorkingDayOfMonth = lastDayOfCurrentMonth.minusMonths(1);
??? This would get you the last day of the previous month, not the last working day. Do you mean to useminusDays(...)
instead?lastDayOfCurrentMonth.minusMonths(1)
to your switch statement, e.g.switch (lastDayOfCurrentMonth.minusMonths(1).getDayOfWeek() )
(note the methodgetDayOfWeek()
which shortens the statement and thus increases readability tremendously).lastDayOfCurrentMonth.minusMonths(1);
tolastDayOfCurrentMonth.minusDays(1);