ysk(0soo)
Lifealong
ysk(0soo)
전체 방문자
오늘
어제
  • 분류 전체보기 (238)
    • Java (50)
      • whiteship-java-study (11)
      • Java (28)
      • time (6)
    • Spring (68)
      • JPA (15)
      • Spring (1)
      • SpringBoot (1)
      • SpringMVC (6)
      • Spring Security (22)
      • Jdbc (1)
      • RestDocs (14)
      • log (6)
    • Kotlin (3)
    • Web (2)
      • nginx (1)
    • Database (14)
      • MySQL (5)
      • PostgreSQL (1)
      • SQL (1)
      • Redis (4)
    • C, C++ (0)
    • Git (1)
    • Docker (2)
    • Cloud (3)
      • AWS (3)
    • 도서, 강의 (0)
      • t5 (0)
    • 기타 (7)
      • 프로그래밍 (1)
    • 끄적끄적 (0)
    • CS (14)
      • 운영체제(OS) (2)
      • 자료구조(Data Structure) (9)
    • 하루한개 (12)
      • 우아한 테크코스-10분테코톡 (12)
    • 스터디 (12)
      • 클린 아키텍처- 로버트마틴 (2)
      • JPA 프로그래밍 스터디 (10)
    • 테스트 (34)
      • JUnit (19)
      • nGrinder (2)
      • JMeter (0)
    • Infra (3)
    • 프로그래머스 백엔드 데브코스 3기 (0)
    • 디자인 패턴 (3)
    • Issue (4)
    • system (1)
      • grafana (0)
      • Prometheus (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

공지사항

인기 글

태그

  • java
  • restdocs custom
  • node exporter basic auth
  • 정규표현식
  • nginx basic auth
  • junit5
  • LocalDateTime
  • UserDetailsService
  • tree
  • querydsl
  • StructuredConcorrency
  • 동시성 제어
  • jpa
  • AuthenticationException
  • 동등성
  • 트랜잭션
  • FilterSecurityInterceptor
  • AccessDecisionManager
  • 동일성
  • DataJpaTest
  • 인가(Authorization) 처리
  • restdocs enum
  • AccessDecisionVoter 커스텀
  • scope value
  • mysql
  • VirtualThread Springboot
  • 구조화된 동시성
  • 가상 스레드
  • nGrinder
  • 가상 스레드 예외 핸들링

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ysk(0soo)

Lifealong

Java/time

Java time 패키지 - TemporalAdjusters 클래스

2022. 12. 8. 23:13

TemporalAdjusters

  • 자주 쓰일만한 날짜 계산들을 대신 해주는 메서드를 정의해 놓은 클래스
    • 예시 : 다음 주 월요일의 날짜를 계산할 때 TemporalAdjusters에 정의된 next()를 사용한 예
LocalDate today = LocalDate.now();
LocalDate nextMonday = today.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
  • 메서드 종류
메서드 설명
firstDayOfNextYear() 다음 해의 첫 날
firstDayOfNextMonth() 다음 달의 첫 날
firstDayOfYear() 올 해의 첫 날
firstDayOfMonth() 이번 달의 첫 날
lastDayOfYear() 올 해의 마지막 날
lastDayOfMonth() 이번 달의 마지막 날
firstInMonth(DayOfWeek dayOfWeek) 이번 달의 첫 번째 ?요일
lastInMonth(DayOfWeek dayOfWeek) 이번 달의 마지막 ?요일
previous(DayOfWeek dayOfWeek) 지난 ?요일(당일 미포함)
previousOrSame(DayOfWeek dayOfWeek) 지난 ?요일(당일 포함)
next(DayOfWeek dayOfWeek) 다음 ?요일(당일 미포함)
nextOrSame(DayOfWeek dayOfWeek) 다음 ?요일(당일 포함)
dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek) 이번 달의 n번째 ?요일

 

TemporalAdjuster 인터페이스

@FuntionalInterface
public interface TemporalAdjuster {
    Temporal adjustInto(Temporal temporal);
}
  • 추상메서드 하나만 정의되어있고, 이 메서드만 구현하면 됨
  • 실제로 구현하는 것은 adjustInto()지만, 같이 사용해야 하는 메서드는 with()
    어느 쪽을 사용해도 되긴 함
    adjustInto() : 내부적으로 사용할 의도로 작성
    with() : 되도록 사용할 것
  • adjustInto()의 매개변수
    날짜와 시간에 관련된 대부분의 클래스가 Temporal 인터페이스를 구현하였기 때문에 adjustInto의 매개변수가 될 수 있음

 

TemporalAdjuster 직접 구현하기

  • 보통은 TemporalAdjusters에 정의된 메서드로 충분
  • 필요할 경우, 자주 사용되는 날짜계산을 해주는 메서드를 직접 만들 수도 있음
  • LocalDate의 with는 다음과 같이 정의되어있고, TemporalAdjuster인터페이스를 구현한 클래스의 객체를 매개변수로 제공
    LocalDate With(TemporalAdjuster adjuster)
  • with()
    LocalTime, LocalDateTime, ZonedDateTime, Instant 등 대부분의 날짜와 시간에 관련된 클래스에 포함되어있음
  • TemporalAdjuster 인터페이스 구현
  • 날짜와 시간에 관련된 대부분의 클래스가 Temporal 인터페이스를 구현하였기 때문에 adjustInto의 매개변수가 될 수 있음
  • 예제) 특정 날짜로부터 2일 후의 날짜를 계산하는 DayAfterTomorrow
Class DayAfterTomorrow implements TemporalAdjuster {
     @Override
     public Temporal adjustInto(Temporal temporal) {
         return temporal.plus(2, ChronoUnit.DAYS); // 2일을 더하기
     }
}

참조

  • 자바의 정석
저작자표시 비영리 (새창열림)

'Java > time' 카테고리의 다른 글

Java time - LocalDateTime 파싱과 포맷  (0) 2022.12.08
Java time 패키지 - Period, Duration 클래스  (0) 2022.12.08
Java time 패키지 - Calendar와 Date  (0) 2022.12.08
Java time 패키지 - LocalDateTime, ZoneDateTime, OffsetDateTime  (0) 2022.12.08
Java time 패키지 - LocalDate, LocalTime, Instant  (0) 2022.12.08
    'Java/time' 카테고리의 다른 글
    • Java time - LocalDateTime 파싱과 포맷
    • Java time 패키지 - Period, Duration 클래스
    • Java time 패키지 - Calendar와 Date
    • Java time 패키지 - LocalDateTime, ZoneDateTime, OffsetDateTime
    ysk(0soo)
    ysk(0soo)
    백엔드 개발을 좋아합니다. java kotlin spring, infra 에 관심이 많습니다. email : kim206gh@naver.com github : https://github.com/devysk

    티스토리툴바