[java] Joda-Time과 Java 8의 java.time 패키지 비교
Java는 시간과 날짜를 다루는 데 많은 기능을 제공하는 Joda-Time 라이브러리를 오랫동안 사용해왔습니다. 하지만 Java 8에서는 이러한 기능들을 표준으로 지원하는 java.time
패키지를 소개했습니다. 이번 글에서는 Joda-Time과 java.time
패키지의 주요 기능 비교를 해보겠습니다.
1. 기본적인 사용법
Joda-Time
import org.joda.time.DateTime;
DateTime currentDate = new DateTime();
int year = currentDate.getYear();
int month = currentDate.getMonthOfYear();
int day = currentDate.getDayOfWeek();
java.time
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
LocalDate currentDate = LocalDate.now();
int year = currentDate.getYear();
int month = currentDate.getMonthValue();
int day = currentDate.getDayOfWeek().getValue();
2. 날짜와 시간 간의 연산
Joda-Time
DateTime futureDate = currentDate.plusDays(7);
Duration duration = new Duration(currentDate, futureDate);
long daysBetween = duration.getStandardDays();
java.time
LocalDate futureDate = currentDate.plusDays(7);
Period period = Period.between(currentDate, futureDate);
int daysBetween = period.getDays();
3. 날짜와 시간 간의 포맷팅 및 파싱
Joda-Time
String formattedDate = currentDate.toString("yyyy-MM-dd");
DateTime parsedDate = DateTime.parse(formattedDate);
java.time
String formattedDate = currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDate parsedDate = LocalDate.parse(formattedDate, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
4. 시간대(Time Zone) 처리
Joda-Time
DateTime dateTimeWithTimeZone = currentDate.withZone(DateTimeZone.forID("Asia/Seoul"));
java.time
ZonedDateTime dateTimeWithTimeZone = currentDate.atStartOfDay(ZoneId.of("Asia/Seoul"));
5. 기능 확장
Joda-Time
Joda-Time은 풍부한 기능들을 제공하며, 라이브러리를 확장하여 사용자 정의 시간 클래스를 만들 수도 있습니다.
java.time
Java 8부터는 java.time
패키지가 표준으로 지원되며, java.time.temporal.TemporalAccessor
인터페이스를 구현하여 사용자 정의 시간 클래스를 만들 수 있습니다.
결론
Joda-Time과 Java 8의 java.time
패키지는 많은 유사점과 차이점을 가지고 있습니다. Java 8에서 java.time
패키지를 사용할 수 있으며, 더욱 간결하고 편리한 API를 제공합니다. Joda-Time을 사용했던 개발자라면 Java 8에서 제공하는 java.time
패키지로의 마이그레이션을 고려해보는 것도 좋은 방법입니다.
참고: