TemporalAdjusters클래스는 자주 쓰일만한 날짜 계산들을 대신 해주는 머서드를 정의해놓은 클래스 이다.
예를 들어 이번 달의 3번째 금요일은 며칠일까?
다음주 월요일은 며칠일까?
유용한 메서드
| 메서드 | 인자 | 설명 |
| firstDayOfNextYear() | void | 다음 해의 첫 날 |
| firstDayOfNextMonth() | void | 다음 달의 첫 날 |
| firstDayOfYear() | void | 올 해의 첫 날 |
| firstDayOfMonth() | void | 이번 달의 첫 날 |
| lastDayOfYear() | void | 올 해의 마지막 날 |
| lastDayOfMonth() | void | 이번 달의 마지막 날 |
| FirstInMonth(DayOfWeek dayOfWeek) | DayOfWeek | 이번 달의 첫 번째 (?)요일 |
| LastInMonth(DayOfWeek dayOfWeek) | DayOfWeek | 이번 달의 마지막 (?)요일 |
| previous(DayOfWeek dayOfWeek) | DayOfWeek | 지난 (?)요일(당일 미포함) |
| previousOrSame(DayOfWeek dayOfWeek) | DayOfWeek | 지난 (?)요일(당일 포함) |
| next(DayOfWeek dayOfWeek) | DayOfWeek | 다음 (?)요일(당일 미포함) |
| nextOrSame(DayOfWeek dayOfWeek) | DayOfWeek | 다음 (?)요일(당일 포함) |
| dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek) | DayOfWeek | 이번 달의 n번째 ?요일 |
위의 유용한 메서드를 사용해보자! LocalTime, LocalDateTime, LocalDate, ZonedDateTime, Instant에 정의된 with()를 이용한다.
public static void main(String[] args) {
LocalDate now = LocalDate.now();
print("now", now);
print("firstDayOfNextMonth(다음 달의 첫 날)", now.with(TemporalAdjusters.firstDayOfNextMonth()));
print("firstDayOfMonth(이 달의 첫 날)", now.with(TemporalAdjusters.firstDayOfMonth()));
print("lastDayOfMonth(이 달의 마지막 날)", now.with(TemporalAdjusters.lastDayOfMonth()));
print("firstInMonth(이 달의 첫번째 월요일)", now.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)));
print("lastInMonth(이 달의 마지막 금요일)", now.with(TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY)));
print("previous(지난 주 월요일(오늘 미포함))", now.with(TemporalAdjusters.previous(DayOfWeek.MONDAY)));
print("previousOrSame(지난 주 월요일(오늘 포함))", now.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)));
print("next(다음 주 월요일(오늘 미포함))", now.with(TemporalAdjusters.next(DayOfWeek.MONDAY)));
print("nextOrSame(다음 주 월요일(오늘 포함))", now.with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY)));
print("dayOfWeekInMonth(이 달의 4번째 화요일)", now.with(TemporalAdjusters.dayOfWeekInMonth(4, DayOfWeek.TUESDAY)));
}
public static void print(String str, Object obj) {
System.out.println(str + " : " + obj);
}
결과 (실행한날 2023-09-11 월요일)
now : 2023-09-11
firstDayOfNextMonth(다음 달의 첫 날) : 2023-10-01
firstDayOfMonth(이 달의 첫 날) : 2023-09-01
lastDayOfMonth(이 달의 마지막 날) : 2023-09-30
firstInMonth(이 달의 첫번째 월요일) : 2023-09-04
lastInMonth(이 달의 마지막 금요일) : 2023-09-29
previous(지난 주 월요일(오늘 미포함)) : 2023-09-04
previousOrSame(지난 주 월요일(오늘 포함)) : 2023-09-11
next(다음 주 월요일(오늘 미포함)) : 2023-09-18
nextOrSame(다음 주 월요일(오늘 포함)) : 2023-09-11
dayOfWeekInMonth(이 달의 4번째 화요일) : 2023-10-03
References
Java의 정석, 남궁 성 지음
'Java' 카테고리의 다른 글
| 날짜와 시간 - parse (0) | 2023.09.11 |
|---|---|
| 날짜와 시간 - DateTimeFormatter (0) | 2023.09.11 |
| 날짜와 시간 - LocalDateTime, ZonedDateTIme (0) | 2023.09.11 |
| 제네릭스 (0) | 2023.09.06 |
| Java Collection Set (0) | 2023.08.24 |