【发布时间】:2018-03-13 16:08:15
【问题描述】:
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);
}
上面给出了当月的最后一个工作日。如何获得Previous 月的最后一个工作日调整上述内容?
【问题讨论】:
-
lastWorkingDayOfMonth = lastDayOfCurrentMonth.minusMonths(1);???这将使您获得上个月的最后一天,而不是最后一个工作日。您的意思是改用minusDays(...)吗? -
至于上个月的最后一个工作日:一旦您的代码被修复,只需将
lastDayOfCurrentMonth.minusMonths(1)输入到您的 switch 语句中,例如switch (lastDayOfCurrentMonth.minusMonths(1).getDayOfWeek() )(注意getDayOfWeek()方法,它缩短了语句,从而极大地提高了可读性)。 -
谢谢 - 我知道哪里出了问题。我将
lastDayOfCurrentMonth.minusMonths(1);更新为lastDayOfCurrentMonth.minusDays(1);
标签: java date java-time localdate