본문 바로가기

Back-End/Spring-Boot

파라미터 포맷 변환(String -> LocalDateTime)

반응형

Vue로부터 Stirng으로 받아온 날짜 파라미터를 변환

 

@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) 어노테이션을 사용하면, Spring이 String을 LocalDate로 자동 변환해 줍니다.


1. Spring이 변환하는 과정

@GetMapping("/api/data")
public List<EntityName> getData(
    @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate targetDate
) {
    System.out.println("Received targetDate: " + targetDate);
}

 

클라이언트에서 YYYY-MM-DD 형식의 문자열을 전송:

GET /api/data?targetDate=2025-03-10

➡ Spring이 String → LocalDate (2025-03-10)로 자동 변환!


2. Spring 내부 동작

Spring이 변환하는 과정:

  1. targetDate는 원래 String 타입의 요청 파라미터 ("2025-03-10")로 들어옴.
  2. @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) 덕분에 Spring이 이를 **LocalDate.parse("2025-03-10")**처럼 자동 변환.
  3. 컨트롤러 메서드에서는 LocalDate 타입으로 사용 가능.

즉, 프론트에서 YYYY-MM-DD 문자열을 보내도, 백엔드에서는 LocalDate로 바로 받을 수 있는 것! 🎯


3. LocalDateTime 변환까지 한번에

@GetMapping("/api/data")
public List<EntityName> getData(
    @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate targetDate
) {
    LocalDateTime startDate = targetDate.atStartOfDay(); // 00:00:00
    LocalDateTime endDate = targetDate.atTime(LocalTime.MAX); // 23:59:59.999999999

    return repository.findByClientCodeAndTimeAtBetween("C123", startDate, endDate);
}

조회 범위를 00:00:00 ~ 23:59:59.999999999로 변환하여 JPA에서 사용


결론

📌 Vue → YYYY-MM-DD 문자열로 보냄
📌 Spring → @DateTimeFormat 덕분에 자동으로 LocalDate 변환
📌 필요하면 LocalDateTime으로 변환하여 JPA 조회

별도 변환 코드 없이 깔끔하게 처리 가능!

반응형