자바/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) + "일"; } }
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)에게 영향을 미칠 수 있다.
출처 : 자바의 정석
'JAVA > 날짜/시간' 카테고리의 다른 글
자바/Java Calendar 사용법 (기본예제 포함) - 3 - (0) | 2012.05.15 |
---|---|
자바/Java Calendar 사용법 (기본예제 포함) - 2 - (0) | 2012.05.14 |
자바/Java Calendar 사용법 (기본예제 포함) - 1 - (5) | 2012.05.14 |
자바/Java Calendar ( 캘린더 ) 시간 셋팅 TIP (2) | 2011.11.20 |
자바/Java Calendar ( 캘린더 ) 란 ? (0) | 2011.10.28 |