본문 바로가기
Development/Spring

@RequestParam Date 타입 받기

by 메정 2021. 9. 25.

@RequestParam

RequestParam을 포맷하는데 사용할 ISO 패턴 enum 타입으로 정의되어 있다고 한다.

pattern

iso 형식으로 표시되지 않는 날짜 시간 패턴을 받고자 할 때 사용한다.

데이터 타입 사용자 정의 패턴으로 패턴은 엄격하게 지켜줘야 한다

pattern example

  • yyyy-MM-dd (ex. 2020-06-23)
  • yyyy-MM-dd HH:mm:ss : (ex. 2020-06-23 18:03:32)
  • yyyy-MM-dd HH:mm:ssZ : (ex. 2020-06-23-18:03:32+09:00)

방법

받고자 하는 Date 타입 앞에 @DateTimeFormat(pattern = "yyyy-MM-dd") Date 타입의 포맷을 지정

public ResponseEntity showPerformanceInfo(@Valid @RequestParam(value = "date", required = true)
                                                  @DateTimeFormat(pattern = "yyyy-MM-dd") Date date,
                                              @Valid @RequestParam(value = "title", required = false) String title) {
`.....
}

Date 타입을 테스트에 사용하기

  1. DataFormat 타입의 객체를 SimpleDateFormat() 생성자로 생성
    1. 이때 원하는 타입의 형태로 지정 가능
  2. Date 타입의 객체를 선언 후 DataFormat 타입으로 생성한 값을 parse하여 변경함
@Test
@DisplayName("[성공] 날짜를 정확하게 입력한 경우")
public void 공연_날짜_정보_조회() throws ParseException {
   DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
   Date startDate = format.parse("2020-06-20");

   List<Performance> result = performanceRepository.findByStartDateGreaterThanEqualOrderByStartDateAsc(startDate);

   assertThat(result.size()).isNotNull();
}

참고

댓글