[Aribnb] 년-월-일(yyyy-MM-dd) 형식으로 출력

11123 단어 yyyy-MM-ddyyyy-MM-dd

❓ 문제상황

여행 예약 리스트 페이지에 체크인 날짜, 체크아웃 날짜가 'yyyy-MM-dd HH:mm:ss'으로 출력되었다. 당장은 시간까지는 필요가 없기 때문에 ''yyyy-MM-dd'으로 날짜 형식을 변환하고 싶었다.

❌ 기존코드

// 숙소를 예약했을 때
@PostMapping("/book/save")
public String bookComplete(BookedHomeSaveRequestDto requestDto, @LoginUser SessionUser user)
	throws ParseException {

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

        BookedHome bookedHome = BookedHome.builder()
                .userid(user.getId())
                .status(1)
                .home(homeService.findById(requestDto.getId()))
                .checkin(new Date(dateFormat.parse(requestDto.getCheckin()).getTime()))
                .checkout(new Date(dateFormat.parse(requestDto.getCheckout()).getTime()))
                .build();

        homeService.addBookedHome(bookedHome);

        return "redirect:/mypage/travel";
}

- new SimpleDateFormat("yyyy-MM-dd");
지정하고 싶은 날짜 형식을 생성했다.
- new Date(dateFormat.parse(requestDto.getCheckin()).getTime())
BookedHomeSaveRequestDto에 저장된 checkIn날짜(String)와 checkOut날짜(String)를 생성한 형식에 맞게 변환하고 날짜를 반환하여 Date 객체를 생성/저장하였다.
- 결과
'2021-11-03 00:00:00'과 같은 형식으로 출력되었다.

🔵 수정한 코드

// 숙소를 예약했을 때
@PostMapping("/book/save")
public String bookComplete(BookedHomeSaveRequestDto requestDto, @LoginUser SessionUser user)
	throws ParseException {
        
        LocalDate checkIn = LocalDate.parse(requestDto.getCheckin(), DateTimeFormatter.ofPattern("yyyy-MM-dd")); //체크인 날짜 형식 변환
        LocalDate checkOut = LocalDate.parse(requestDto.getCheckout(), DateTimeFormatter.ofPattern("yyyy-MM-dd")); //체크인 날짜 형식 변환

        BookedHome bookedHome = BookedHome.builder()
                .userid(user.getId())
                .status(1)
                .home(homeService.findById(requestDto.getId()))
                .checkin(checkIn)
                .checkout(checkOut)
                .build();

        homeService.addBookedHome(bookedHome);

        return "redirect:/mypage/travel";
}

- LocalDate.parse(requestDto.getCheckin(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
BookedHomeSaveRequestDto에 저장된 checkIn날짜(String)와 checkOut날짜(String)를 'yyyy-MM-dd' 형식의 LocalDate 객체로 생성한다.
- .checkin(checkIn).checkout(checkOut)
BookedHome의 checkin, checkout필드의 타입을 기존과 동일하게 Date로 하면 똑같이 '2021-11-03 00:00:00'과 같은 형식으로 출력된다.
따라서 해당 필드의 타입을 LocalDate으로 변경해주었다.

🟢 출력된 결과

좋은 웹페이지 즐겨찾기