남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
Calendar클래스
- set()으로 날짜와 시간 지정하기
날짜 지정하는 방법 ( 월(MONTH)이 0부터 시작한다는 점에 주의 )
Calendar date1 = Calendar.getInstance();
date1.set(2017, 7, 15); // 2017년 8월 15일 (7월 아님)
//date1.set(Calendar.YEAR, 2017);
//date1.set(Calendar.MONTH, 7);
//date1.set(Calendar.DATE, 15);
시간 지정하는 방법 ( 시,분,초를 한번에 셋팅할 수 없어서 하나씩 해줘야함)
Calendar time1 = Calendar.getInstance();
time1.set(Calendar.HOUR_OF_DAY, 10); //time1을 10시 20분 30초로 설정
time1.set(Calendar.MINUTE, 20);
time1.set(Calendar.SECOND, 30);
- clear()는 Calendar객체의 모든 필드를 초기화
Calendar dt = Calendar.getInstance(); // 현재시간
System.out.println(new Date(dt.getTimeInMillis()));
dt.close(); //모든 필드 초기화
System.out.println(new Date(dt.getTimeInMilis()));
- clear(int field)는 Calendar객체의 특정 필드를 초기화
Calendar dt = Calendar.getInstance();
System.out.println(new Date(dt.getTimeInMillis()));
dt.clear(Calendar.Second); //초를 초기화
dt.clear(Calendar.Minute); //분를 초기화
dt.clear(Calendar.HOUR_OF_DAY); //시간을 초기화
dt.clear(Calendar.HOUR); //시간을 초기화
System.out.println(new Date(dt.getTimeInMillis()));
- add()는 특정 필드의 값을 증가 또는 감소 (다른 필드에 영향 O)
Calendar date = Calendar.getInstance();
date.clear(); // 모든 필드를 초기화
date.set(2020, 7, 31); // 2020년 8월 31일로 설정
date.add(Calendar.Date, 1); // 날짜(DATE)에 1을 더한다. 2020년 9월 1일로 됨
- roll()은 특정 필드의 값을 증가 또는 감소 (다른 필드에 영향 X)
date.set(2020, 7, 31) ; //2020년 8월 31일로 설정
// add()와 달리 roll()은 다른 필드에 영향을 미치지 않는다.
date.roll(Calendar.DATE, 1); //날짜(DATE)에 1을 더한다. 2020년 8월 1일로 됨
date.roll(Calendar.MONTH, -8); //월(MONTH)에서 8을 뺀다.
Date와 Calendar 간의 변환
- Date의 메서드는 대부분 deprecated되었지만 여전히 사용
1. Calendar를 Date로 변환
Calendar cal = Calendar.getInstance();
...
Date d = new Date(cal.getTimeInMillis()); // Date(long date)
2. Date를 Calendar로 변환
Date d = new Date();
...
Calendar cal = Calendar.getInsatnce();
cal.setTime(d);
댓글