자바의 날짜는 제공하는 클래스는 여럿있다.
대표적으로 Date, Calendar, LocalDate 등이 있다.
Date와 Calendar는 depreacated 되었으며, 여러 문제가 있다.
- 불변 객체가 아니다.
여러 객체에 공유될 경우 값을 바꾸게 되면 공유된 다른 객체에도 시간이 변경되기 떄문에 불변 객체를 사용하는것을 권장한다.
- 헷갈리는 월 지정
5월을 지정하고 싶은경우 인자를 5가 아닌 4를 넘겨야 하며,
데이터를 날짜로 변경할 경우 월을 +1 해야 한다는 단점을 가진다.
- 일관성 없는 요일 상수
Calendar.get(Calendar.DAY_OF_WEEK) 에서는 일요일을 1로 표현한다.
하지만 Date.getDay() 메소드에서는 일요일을 0으로 표현한다.
두 클래스간의 일관성이 없어 문제로 발생할 수 있다.
- Date와 Calendar 객체의 역할 분담
연/월/일 계산은 Date 클래스로는 부족하여 Calendar 클래스로 변환할 경우 비용이 비싸다.
위와 같은 문제들로 자바 1.8부터는 java.time.LocalDate를 사용하는 것을 권장 하고 있다.