Calendar 예제(2)
저번 시간에,
필드 읽기 get()
필드 변경 set()
필드 초기화 clear()를 공부했다.
이번시간에는, add()와 roll()에 대해 알아보자.
Calandar 클래스 - 예제 4, 5
- add()는 특정 필드의 값을 증가 또는 감소(다른 필드에 영향O)
add()는 특정 필드의 값을 증가 또는 감소시키는 것이다.
언제 사용하냐면,
우리가 날짜를 계산할 때, 예를들어 일주일뒤, 며칠뒤, 일주일 전 등을 게산할 때 사용하는 것이 add()이다.
add()매개변수에는 음수도 사용할 수 있기 때문에 특정 필드의 값을 감소시키는 것도 가능하다.
처음에, date라는 참조변수에 Calendar객체를 생성하고,
date.clear(); 메서드로 모든 필드를 초기화 했다.
그리고, set()을 이용해서 7월 31일 같지만, 실제로는 8월 31일로 설정했다.
그리고, add()를 이용해서 날짜를 1증가시켰다.
그러면, 8월 31일에서 +1일이 되어 9월 1일이 된다.
그다음, add()메서드를 이용해서 월을 -8해주었다.
그러면, 9월1일의 8개월 전이 되므로, 1월1일이 된다.
이런식으로 양수뿐만아니라, 음수도 사용할 수 있다.
- roll()은 특정 필드의 값을 증가 또는 감소(다른 필드에 영향 X)
기본적으로 roll()은 add()와 거의 같다.
어떤 차이가 있냐면, add()는 다른 필드에 영향을 주고, roll()은 다른필드에 영향을 주지 않는다.
이것이 무슨 이야기냐면,
date.add(Calendar.DATE, 1);로 날짜에 1을 더하면,
8월 31일이 9월 1일로 바뀌었는데, 일만바뀐것이 아니라, 월도 바뀐것을 확인할 수 있다.
그러니까, 일에서의 변화가 월에도 영향을 준 것이다.
즉, 다른 필드에 영향을 준 것이다.
그러나, roll()은 다른필드에 영향을 주지 않는다.
예를들어서 똑같이 date를 8월 31일로 설정했는데,
date.roll(Calendar.DATE, 1);을 하면, roll()은 다른 필드에 영향을 주지 않기 때문에, 9월1일이 아니라 8월 1일이 된다.
date.roll(Calenadar.MONTH, -8);을 하면 2020년 8월 31일에서 8개월을 빼면 2019년 12월 31일이 되는데, roll은 다른 필드에 영향을 미치지 않기 떄문에, 2020년 12월 31일이 된다.
[Ex10_4]
[Ex10_5]
달력 출력하기
1. 말일 구하기 (다음달 1일 - 1일)
2. 1일의 요일 구하기
Date와 Calendar간의 변환
- Date의 메서드는 대부분 deprecated되었지만 여전히 사용
자바에서 날짜를 다루는 것이 맨처음에 Date클래스였다가 Calendar로 바뀌었다.
Date는 이제 잘 사용하지 않기는하지만, 예전 라이브러리르 사용하다보면 Date를 사용해야하는 경우가 있다.
그런데, Date클래스에 있는 메서드는 대부분 문제가 많아서, deprecated(사용하지 않을 것을 권장) 되었다.
그래서, Date와 Calendar사이의 변환과정은 알아두어야 한다.
Calendar를 Date로 변환하려면,
new Date의 생성자에 캘린더의 cal.getTimeInMillis());를 호출해주면 된다.
그러면, Calendar를 Date로 변환할 수 있다.
Date를 Calendar로 변환할 떄는,
Calendar객체를 생성한 다음에,
cal.setTime()에다가 Date객체 d를 넣어주면 된다.
'JAVA' 카테고리의 다른 글
형식화 클래스 SimpleDateFormat (0) | 2022.04.27 |
---|---|
형식화 클래스 DecimalFormat (0) | 2022.04.26 |
Calendar 예제(1) (0) | 2022.04.25 |
날짜와 시간, Calendar 클래스 (0) | 2022.04.20 |
오토박싱 & 언박싱, 문자열과 숫자변환 (0) | 2022.04.19 |
댓글
이 글 공유하기
다른 글
-
형식화 클래스 SimpleDateFormat
형식화 클래스 SimpleDateFormat
2022.04.27 -
형식화 클래스 DecimalFormat
형식화 클래스 DecimalFormat
2022.04.26 -
Calendar 예제(1)
Calendar 예제(1)
2022.04.25 -
날짜와 시간, Calendar 클래스
날짜와 시간, Calendar 클래스
2022.04.20