[Java/ChatGPT] Day 20: 날짜(LocalDate) 활용 & 조건 기반 검색 기능
dev.jelee2025. 7. 24. 17:37
[ 학습 목표 ]
java.time.LocalDate 를 사용해 현재 날짜와 출판 연도 등을 관리한다.
도서 정보에 출판 연도를 String -> LocalDate 로 바꿔 정확한 날짜 비교 및 정렬을 해본다.
검색 기능을 개선해서 연도 기준, 키워드 기준 검색이 가능하도록 한다.
[ 이론 ]
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