본문 바로가기
☕Java/Java 기본

java.util.Date, java.util.Calendar 클래스를 사용하면 안 되는 이유

by 캔 2022. 8. 1.

java.util.Date, java.util.Calendar 클래스는 자바에서 날짜, 시간 관련 작업이나 연산을 수행하기 위한 클래스이다. 자바가 발전해감에 따라 두 클래스의 문제점이 드러나기 시작했고 JDK 1.8에서 두 클래스를 대체할 java.time 라이브러리가 등장하였다.

 

Date, Calendar 클래스를 사용하지 말아야 하는 이유를 나열하면 다음과 같다.

 

두 클래스 mutable 하기 때문에 객체의 메서드나 변수를 수정할 경우 참조하는 객체들의 값들이 변경된다.

 

calendar의 상수를 남용할 가능성이 있다.

 

월 값이 0부터 시작하여 직관적이지 않다.

 

timezone이 없다.

 

새로운 JDK가 계속 출시되면서 대부분의 메서드는 deprecated되었다.

 

이름은 date인데 실제로는 date와 time으로 이뤄졌다. 참고로, sql에서는 java.sql.date는 날짜만, java.sql.timestamp가 날짜+시간

 

자바 1.8부터는 java.time.LocalDatetime, java.time.LocalDate, Java.time.LocalTime을 쓸 것을 권장한다. 그 이전 버전의 경우에는 joda time 같은 서드파티 오픈 소스 라이브러리를 사용할 것을 추천한다.