본문 바로가기

JAVA/날짜/시간

자바/Java Calendar 사용법 (기본예제 포함) - 4 -

자바/Java Calendar 사용법 (기본예제 포함)  - 4 -



CalendarEx4.java

package arabiannight.tistory.com.calendardate;

import java.util.*;

class  CalendarEx4 {
	public static void main(String[] args) {
		Calendar date = Calendar.getInstance();

		date.set(2005, 7, 31);	// 2005년 8월 31일
		
		System.out.println(toString(date));
		System.out.println("= 1일 후 =");
		date.add(Calendar.DATE, 1);
		System.out.println(toString(date));

		System.out.println("= 6달 전 =");
		date.add(Calendar.MONTH, -6);
		System.out.println(toString(date));

		System.out.println("= 31일 후(roll) =");
		date.roll(Calendar.DATE, 31);
		System.out.println(toString(date));

		System.out.println("= 31일 후(add) =");
		date.add(Calendar.DATE, 31);
		System.out.println(toString(date));
	}

	public static String toString(Calendar date) {
		return date.get(Calendar.YEAR)+"년 "
				+ (date.get(Calendar.MONTH)+1) + "월 " 
				+ date.get(Calendar.DATE) + "일";
	}
}


Result
2005년 8월 31일
= 1일 후 =
2005년 9월 1일
= 6달 전 =
2005년 3월 1일
= 31일 후(roll) =
2005년 3월 1일
= 31일 후(add) =
2005년 4월 1일




add(int field, int amount)를 사용하면 지정한 필드의 값을 원하는 만큼 증가 또는 감소 시킬 수 있기 때문에 add메서드를 이용하면 특정 날짜 또는 시간을 기점으로 해서 일정 기간 전후의 날짜와 시간을 알아낼 수 있다.


roll(int field, int amount)도 지정한 필드의 값을 증가 또는 감소시킬 수 있는데, add메서드와의 차이점은 다른 필드에 영향을 미치지 않는다는 것이다. 예를 들어 add메서드로 날짜필드(Calendar.DATE)의 값을 31만큼 증가시켰다면 다음 달로 넘어가므로 월 필드(Calendar.MONTH)의 값도 1 증가하지만, roll메서드는 같은 경우에 월 필드의 값 은 변하지 않고 일 필드의 값만 바뀐다.


단, 

한 가지 예외가 있는데 일 필드(Calendar.DATE)가 만일(end of month) 일 때, roll메서드를 이용해서 월 필드(Calendar.MONTH)를 변경하는 경우, 일 필드(Calendar.DATE)에게 영향을 미칠 수 있다.





출처 : 자바의 정석