Java책을 보다보니 Calendar를 가르치고 있길래 문득, 인턴 할때 Calendar를 쓰지말고 다른 API를 사용하라고 해서 왜 그런가 찾아보았다.
날짜, 시간을 다루는 API인 Date와 Calendar는 많은 문제가 있다고 한다.
문제점
1. 불변 객체가 아니다.
- 불변 객체가 아니기때문에 하나의 Date객체를 만들고 이 값을 여러 곳에서 바꾸면 한 곳에서 바꾼 값이 다른 곳에 영향을 미칠 수 있다. 그래서 객체를 복사해서 반환하는 기법으로 구현해야 한다.
2. int 상수를 남용해서 엉뚱한 숫자가 들어가도 체크하기 어렵다.
- Calendar.MAY 자리에 Calendar.SECOND가 들어가도 컴파일 할 때 확인이 불가하다.
3. 월 지정이 배열 인덱스마냥 헷가리게 되어있고, 두 클래스의 요일 상수가 다르다.
- Calendar.March(3월)은 3이아니라 2다.
- Calendar 객체는 일요일이 1부터 시작, Date 객체는 일요일이 0부터 시작한다.
4. 포지션이 애매하다.
- 처음에는 Date클래스만 날짜 연산을 지원하다가 Calendar가 생기면서 애매하게 둘을 섞어서 쓰게 되었다.
5. 타임존 아이디를 틀려도 오류가 발생하지 않는다.
- Asia/Seoul을 Seoul/Asia로 해도 실행이 된다.
그래서 뭘 써야되느냐?
-> Joda-Time이란 걸 쓴다. 아래 블로그 글을 참고하자
https://jojoldu.tistory.com/26
댓글