본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( Calendar클래스 - set, clear, add, roll / Date와 Calendar간의 변환)

by ✲ 2020. 8. 8.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.

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);

반응형

댓글