jungheyin / TravelPlans.

0 stars 0 forks source link

new 여행계획구현 - itinerary #6

Open jungheyin opened 2 years ago

jungheyin commented 2 years ago

itinerary의 여행일정 날짜 나타내는 부분

travel에서 시작날짜와 마지막날짜를 가져와서 시작날짜 ~ 마지막 날짜 까지의 날짜를 가져온다. 날짜별로 제목, 일정을 가져올수 있게한다.

  1. jstl로 가져올수 있다 생각했는데 jstl은 list에있는것을 반복을 돌려서 데이터를 가져와야해서 안된다.

  2. bo에서 list를 만들어서 가져오기로 했다. public List generateTravelDateListById(int travleId) {

} 이렇게 만들어서 가져갈려고 했지만, date는 String으로 만들어야 한다..

  1. List generateTravelDateListById() {

} String으로 List를 만들어서 jsp에서 뿌릴수 있다고 한다

Date 객체, Calendar 클래서를 사용해서 리스트안에 넣으려했더니 너무 복잡해서 너무 어려움..ㅣ

=> 열심히 검색하다가 LocalDate 클래스를 알게됨!! Date 객체, Calendar 보단 LocalDate가 더 간단하고 쉽게 사용할 수 있음!! 무한루프를 사용해서 list를 넣을려고 while문을 사용함!!

jungheyin commented 2 years ago
public List<String> generateTravelDateListById(int travelId) {

  // travelId를 통해서 travel을 가져오기
  Travel travel = newTravelBO.getTravelById(travelId);

  // travel에서 startDate와 endDate가져오기
  String startDate = travel.getStratDate();
  String endDate = travel.getEndDate();

  // return 해줄 List
  List<String> travelDateList = new ArrayList<>();

  // LocalDate format, String -> LocalDate으로 변환
  DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyy-MM-dd");
  LocalDate startLocal = LocalDate.parse(startDate, formatter);
  LocalDate endLocal = LocalDate.parse(endDate, formatter);

  // 무한루프 돌려서 List에 startLocal ~ endLocal 날짜 모두 String으로 바꿔서  list에 넣 
  어준다.
  int i = 0;
  while(true) {
     LocalDate plusDay = startLocal.plusDays( i );
     String plusDayStr = plusDay.format(formatter);
     travelDateList.add(plusDayStr);  

     // 마지막 날짜와 같을경우 멈추기
     if (endLocal.isEqual(plusDay)) {
          break;
     }
     i++;
  }
  return travelDateList;
 }