날짜와 시간

Calendar와 Date

Date클래스로 날짜와 시간을 다룰 수있다. 하지만 이 클래스는 빈약했기 때문에 Calendar라는 새로운 클래스를 제공했다. 그 뒤 java.time패키지로 기존의 단점들을 보완하여 새로운 클래스들이 추가됐다.

Calendar와 GregorianCalendar

Calendar클래스는 추상클래스이기 때문에 직접 인스턴스를 생성할 수 없고, 클래스 내부의 메소드를 이용해서 인스턴스를 얻어야한다.

Calendar cal = Calendar.getInstance();

getInstance()는 시스템의 국가와 지역설정을 확인하여 해당하는 역법에 대한 클래스를 반환한다. 태국을 제외한 국가에서는 그레고리력을 사용하기 때문에 GregorianCalendar클래스를 반환한다.

왜냐? 유지보수의 편의성을 위해 이런식으로 작성한다.

getInstance()는 static메소드이다.

Date와 Calendar간 변환

Calendar클래스가 나오면서 Date클래스의 메소드는 대부분 "deprecated"(더 이상 사용되지 않음) 되었지만, 두 클래스간에 변환이 필요한 경우는 아래와 같이 할 수 있다.

// 1. Calendar -> Date 변환
Calendar cal = Calendar.getInstance();
Date d = new Date(cal.getTimeInMillis());

// 2. Date -> Calendar 변환
Date d = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(d);

Calendar 기본 사용법