자바의 날짜는 제공하는 클래스는 여럿있다. 대표적으로 Date, Calendar, LocalDate 등이 있다. Date와 Calendar는 depreacated 되었으며, 여러 문제가 있다.

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

위와 같은 문제들로 자바 1.8부터는 java.time.LocalDate를 사용하는 것을 권장 하고 있다.