공부 기록/Java with ChatGPT

[Java/ChatGPT] Day 20: 날짜(LocalDate) 활용 & 조건 기반 검색 기능

dev.jelee 2025. 7. 24. 17:37

[ 학습 목표 ]

  1. java.time.LocalDate 를 사용해 현재 날짜와 출판 연도 등을 관리한다.
  2. 도서 정보에 출판 연도를 String -> LocalDate 로 바꿔 정확한 날짜 비교 및 정렬을 해본다.
  3. 검색 기능을 개선해서 연도 기준, 키워드 기준 검색이 가능하도록 한다.

[ 이론 ]

1. LocalDate란?

  • java.time 패키지에서 제공
  • 날짜(연도, 월, 일)를 다룰 수 있는 객체
import java.time.LocalDate;

LocalDate today = LocalDate.now(); // 현재 날짜
LocalDate published = LocalDate.of(2020, 03, 14); // 2020년 3월 14일

[ 실습 ]

1. 개선할 Book 클래스

  • day19에서 개선하면 됨
  • year: String -> publishedDate: LocalDate로 변경
import java.time.LocalDate;

public class Book {
  private String title;
  private String author;
  private LocalDate publishedDate;

  public Book(String title, String author, LocalDate publishedDate) {
    this.title = title;
    this.author = author;
    this.publishedDate = publishedDate;
  }

  public String getTitle() { return title; }
  public String getAuthor() { return author; }
  public LocalDate getPublishedDate() { return publishedDate; }

  public String toString() {
    return "[" + title + " | " + author + " | " + publishedDate + "]";
  }
}

2. 조건 검색 기능 구현

1) 연도 기준 검색

public void searchAfterYear(int year) {
  for (Book b : books) {
    if (b.getPublishedDate().getYear() > year) {
      System.out.println(b);
    }
  }
}

 

2) 키워드 포함 검색 (제목 또는 저자에 키워드가 포함된 책 찾기)

public void searchByKeyword(String keyword) {
  for (Book b : books) {
    if (b.getTitle().contains(keyword) || b.getAuthor().contains(keyword)) {
      System.out.println(b);
    }
  }
}

3. 예시 입력 포맷 변경

1) books.txt 저장할 때 날짜를 yyyy-MM-dd 형식으로 저장해야 함:

클린 코드, 로버트 마틴, 2008-08-01
모던 자바 인 액션, 브라이언 고에츠, 2021-04-15

 

2) 불러올 때는 LocalDate.parse()로 읽어들임:

String[] parts = line.split(", ");
LocalDate date = LocalDate.parse(parts[2]); // 예: 2021-04-15