10.1.1 Calendar
- 추상클래스(직접 인스턴스 생성 불가)
- getInstance()로 인스턴스 반환 가능
//국가와 지역설정
Calendar cal1 = Calendar.getInstance();
//Error!
Calendar cal2 = new Calendar();
/*
getInstance()가 static인 이유는, 인스터스 변수를 사용하거나
인스턴스 메서드르 호출하지 않기 때문이다.
*/
10.1.2 Date와 Calendar간의 변환
- Date는 JDK 1.0부터 사용할 수 있지만 대부분 'deprecated'가 됨
1. Calendar -> Date
Calendar cal = Calendar.getInstance();
Date d = new Date(cal.getTimeMillis());
2. Date -> Calendar
Date d = new Date();
Calendar cal = Calender.getInstance();
cal.setTime(d);
10.1.3 Calendar.get()
Calendar c = Calendar.getInstance();
c.get(Calendar.DATE); //이달의 몇 일
c.get(Calendar.DAY_OF_WEEK) //1:일요일 ~ 7:토요일
c.getActualMaximum(Calendar.DATE) //이달의 마지막날
c.get(Canlendar.MONTH) //0(1월) ~ 11(12월)
10.1.3 .add(), .roll()
- .add는 다른 필드에 영향을 미침(값 변동O)
- roll은 다른 필드에 영향을 미치치 않음(값 변동X)
Calendar d = Calendar.getInstance();
//월 단위는 -1
d.set(2015,7,31); //2015년 8월 31일
d.add(Calendar.DATE, 1); //2015년 9월 1일
d.add(Calendar.MONTH, -6); //2015년 3월 1일
d.roll(Calendar.DATE, 31); //2015년 4월 1일
d.add(Calendar.DATE, 31); //2015년 4월 1일
d.add(Calendar.DATE, -1); //2015년 3월 31일
d.set(2015, 0 ,31) //2015년 1월 31일
d.roll(Calendar.MONTH, 1); //2015년 2월 28일
/*
2월은 28까지만 존재하여 28일 이후면 자동으로 28일로 변환됨(윤달 제외)
*/
10.1.4 substring을 통한 기간 계산
String d1 = "201508";
String d2 = "201405";
int mon1 = Integer.parseInt(d1.substring(0,4)) * 12 +
Integer.parsInt(d1.substring(4));
int mon2 = Integer.parseInt(d1.substring(0,4)) * 12 +
Integer.parsInt(d1.substring(4));
mon1 - mon2 //15
'자바의 정석 정리' 카테고리의 다른 글
자바의 정석 - 10.3 java.time (0) | 2022.07.07 |
---|---|
자바의 정석 - 10.2 형식화 클래스 (0) | 2022.07.07 |
자바의 정석 - 8.3 사용자정의 예외 (0) | 2022.06.17 |
자바의 정석 - 8.2 예외 발생시키기 (0) | 2022.06.17 |
자바의 정석 - 8.1 프로그램 에러 (0) | 2022.06.17 |