메서드 | 설명 |
---|---|
dayOfWeekInMonth | 요일에 해당하는 날짜를 반환함(음수를 사용하면 월의 끝에서 거꾸로 계산 |
firstDayOfMonth | 현재 달의 첫 번째 날짜를 반환함 |
firstDayOfNextMonth | 다음 달의 첫 번째 날짜를 반환함 |
firstDayOfNextYear | 내년의 첫 번째 날짜를 반환함 |
firstDdayOfYear | 올해의 첫 번째 날짜를 반환함 |
firstInMonth | 현재 달의 첫 번째 날짜를 반환함 |
lastDayOfMonth | 이번 달의 마지막 날짜를 반환함 |
lastDayOfNextMonth | 다음 달의 마지막 날짜를 반환함 |
lastDayOfNextYear | 내년의 마지막 날짜를 반환함 |
lastDayOfYear | 올해의 마지막 날짜를 반환함 |
lastInMonth | 이번달의 마지막 날짜를 반환함 |
next | 현재 달에서 현재 날짜 이후로 지정한 요일이 처음으로 나타나는 날짜를 반환함 |
previous | 현재 달에서 현재 날짜 이전에 지정한 요일이 처음으로 나타나는 날짜를 반환함 |
nextOrSame | 현재 날짜 이후 지정한 요일이 처음으로 나타나는 날짜를 반환함 |
previousOrSame | 현재 날짜 이전에 지정한 요일이 처음으로 나타나는 날짜를 반환함 |
public class NextWorkingDay implements TemporalAdjuster {
@Override
public Temporal adjustInto(Temporal temporal) {
DayOfWeek dow =
DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));
int dayToAdd = 1; // 평일의 경우 1일 추가
if (dow == DayOfWeek.FRIDAY) dayToAdd = 3; // 금요일의 경우 3일을 추가해야 월요일이 된다.
else if (dow == DayOfWeek.SATURDAY) dayToAdd = 2; // 토요일의 경우 2일을 더해야 월요일이 된다.
retun temporal.plus(dayToAdd, ChronoUnit.DAYS);
}
}
-> 현재 요일이 금요일일 경우 3일을 이동, 토요일일 경우 2일을 이동 해야 평일이 된다.
람다표현식을 통해 다음과 같이 표현할 수 있다.
date = date.with(temporal -> {
DayOfWeek dow = DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));
int dayToAdd = 1;
if(dow == DayOfWeek.FRIDAY) dayToAdd = 3;
else if (dow == DayOfWeek.SATURDAY) dayToAdd = 2;
return temporal.plus(dayToAdd, ChronoUNit.DAYS);
});