Ch10-1~3. Calendar 클래스
0. 목차
Chapter10. 날짜와 시간 & 형식화
Ch10 - 1. 날짜와 시간
Ch10 - 2. Calendar 클래스
Ch10 - 3. Calendar 클래스 예제1
Ch10 - 1. 날짜와 시간
▶ java.util.Date 클래스란?
▷ 날짜와 시간을 다룰 목적으로 만들어진 클래스(JDK1.0)
▷ Date의 메서드는 거의 deprecated 되었지만, 여전히 사용
▶ java.util.Calendar 클래스란?
▷ Date 클래스를 개선한 새로운 클래스(JDK1.1)
▷ 그러나 여전히 단점 존재
▶ java.time 패키지란?
▷ Date와 Calendar의 단점을 개선한 새로운 클래스들을 제공(JDK1.8 = java8)
▷ Date와 Calendar의 단점 : 날짜와 시간을 같이 다룸
▷ java.time 패키지 : 날짜와 시간을 구분
- 날짜만 사용 -
LocalDate
클래스 - 시간만 사용 -
LocalTime
클래스 - 날짜 + 시간 둘 다 사용 -
LocalCateTime
클래스
Ch10 - 2. Calendar 클래스
▶ Calendar 클래스란?
▷ 추상 클래스
▷ getInsance()를 통해 구현 된 객체를 얻어야 함
Calendar cal = new Calendar();
// ERROR! 추상 클래스 객체 생성 불가
Calendar cal = Calendar.getInstance();
- 이렇게 호출하면 Calendar 클래스를 구현한 클래스의 인스턴스를 반환
- 우리는 ① 서양력 ② 불교력 ③ 일본력 中 ① 서양력을 사용
- 그래서
getInsance()
로 호출하면 GregorianCalendar 클래스의 인스턴스 반환
- 이렇게 호출하면 Calendar 클래스를 구현한 클래스의 인스턴스를 반환
Calendar cal new GregorianCalendar();
이렇게 호출하지 않는 이유
- 특정 Calendar 클래스를 지정해서 호출하면,
- 사용자가 다른 Calendar를 사용하게 될 때, 호출한 부분을 수정해야 함
- 그래서
Calendar cal = Calendar.getInstance();
와 같이 - 상황에 따라 알맞는 Calendar를 반환 하는 코드가 좋은 것
- 특정 Calendar 클래스를 지정해서 호출하면,
Ch10 - 3. Calendar 클래스 예제1
▶ get()는?
▷ get()로 날짜와 시간 필드 가져올 수 있음
int get(int field)
▷ set()로 날짜와 시간 필드를 변경할 수 있음
▶ 실습
▷ getInstance()
Calendar cal = Calendar.getInstance();
현재 날짜와 시간으로 세팅
▷ 올해의 년도?
int thisYear = cal.get(Calendar.YEAR);
// console
2021
▷ 이 달의 마지막 날?
int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE);
// console
31
▶ Calendar에 정의 된 필드1 : 날짜 관련
▷ YEAR : 년도
int thisYear = cal.get(Calendar.YEAR);
// console
2021
▷ MONTH : 월(0부터 시작) → ‘0’이 있기 때문에 -1 해 주어야 함(7월 = 6월)
int thisMonth = cal.get(Calendar.MONTH);
// console
6
▷ WEEK_OF_MONTH : 그 달의 1일 부터 현재까지가 몇 번째 주인지
int thisWeekOfMonth = cal.get(Calendar.WEEK_OF_MONTH);
// console
4
▷ WEEK_OF_YEAR : 1월 1일 부터 현재까지가 몇 번째 주인지
int thisWeekOfYear = cal.get(Calendar.WEEK_OF_YEAR);
// console
30
▷ DATE : 일
int thisDate = cal.get(Calendar.DATE);
// console
22
▷ DAY_OF_MONTH : 그 달의 몇 번째 일인지
int thisDayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
// console
22
▷ DAY_OF_YEAR : 그 해의 몇 번째 일인지
int thisDayOfYear = cal.get(Calendar.DAY_OF_YEAR);
// console
203
▷ DAY_OF_WEEK : 요일(1-일, 2-월, 3-화, 4-수, 5-목, 6-금, 7-토)
int thisDayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
// console
5
▷ DAY_OF_WEEK_IN_MONTH : 그 달의 몇 번째 요일인지
int thisDayOfWeekInMonth = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH);
// console
4
▶ Calendar에 정의 된 필드2 : 시간 관련
▷ HOUR : 시간(0~11)
int thisHour = cal.get(Calendar.HOUR);
// console
8
▷ HOUR_OF_DAY : 시간(0~23)
int thisHourOfDay = cal.get(Calendar.HOUR_OF_DAY);
// console
20
▷ MINUTE : 분
int thisMinute = cal.get(Calendar.MINUTE);
// console
50
▷ SECOND : 초
int thisSecond = cal.get(Calendar.SECOND);
// console
12
▷ MILLISECOND : 1/1000초
int thisMilliSecond = cal.get(Calendar.MILLISECOND);
// console
181
▷ ZONE_OFFSET : GMT기준 시차(1/1000초 단위) - 한국은 GMT + 9
int thisZoneOffset = cal.get(Calendar.ZONE_OFFSET);
// console
32400000
▷ AM_PM : 오전_오후
int thisAmPm = cal.get(Calendar.AM_PM);
// console
1