해당 글에서는 Java 11 기준으로 Calendar Class API Document에 대해 확인합니다.
![]()
1) Calendar
💡 Calendar
- 날짜와 시간 필드를 제공하며 날짜와 시간을 조작하는 데 사용이 되는 클래스를 의미합니다.
- 클래스 내에서는 년, 월, 일, 시간, 분, 초 등의 날짜/시간 필드를 제공합니다.
- 해당 클래스는 java.util 패키지 내에 포함되어 있습니다.

2) Calendar Class Method
💡 해당 API 문서는 Java 11 버전을 기준으로 요약 정리한 Calendar Class Method입니다.
| 메서드 | 리턴 값 | 설명 |
| add(int field, int amount) | abstract void | 주어진 캘린더 필드에 지정된 시간량을 추가하거나 뺍니다. |
| after(Object when) | boolean | 이 캘린더가 지정된 객체가 나타내는 시간 이후를 나타내는지 여부를 반환합니다. |
| before(Object when) | boolean | 이 캘린더가 지정된 객체가 나타내는 시간 이전을 나타내는지 여부를 반환합니다. |
| clear() | void | 이 캘린더의 모든 캘린더 필드 값과 시간 값을 초기화합니다. |
| clear(int field) | void | 주어진 캘린더 필드의 값을 초기화합니다. |
| clone() | Object | 이 객체의 복사본을 생성하고 반환합니다. |
| compareTo(Calendar anotherCalendar) | int | 두 캘린더 객체가 나타내는 시간 값(Epoch로부터의 밀리초 오프셋)을 비교합니다. |
| complete() | protected void | 캘린더 필드에 설정되지 않은 모든 필드를 채웁니다. |
| computeFields() | protected abstract void | 현재 밀리초 시간 값을 캘린더 필드 값으로 변환합니다. |
| computeTime() | protected abstract void | 현재 캘린더 필드 값을 밀리초 시간 값으로 변환합니다. |
| equals(Object obj) | boolean | 이 캘린더와 지정된 객체를 비교합니다. |
| get(int field) | int | 주어진 캘린더 필드의 값을 반환합니다. |
| getActualMaximum(int field) | int | 이 캘린더의 시간 값에 따라 주어진 캘린더 필드가 가질 수 있는 최대 값을 반환합니다. |
| getActualMinimum(int field) | int | 이 캘린더의 시간 값에 따라 주어진 캘린더 필드가 가질 수 있는 최소 값을 반환합니다. |
| getAvailableCalendarTypes() | static Set<String> | 런타임 환경에서 캘린더가 지원하는 모든 캘린더 유형을 포함하는 변경 불가능한 Set을 반환합니다. |
| getAvailableLocales() | static Locale[] | 이 클래스의 getInstance 메서드가 지역화된 인스턴스를 반환할 수 있는 모든 로케일의 배열을 반환합니다. |
| getCalendarType() | String | 이 캘린더의 캘린더 유형을 반환합니다. |
| getDisplayName(int field, int style, Locale locale) | String | 주어진 스타일과 로케일에 대한 캘린더 필드 값의 문자열 표현을 반환합니다. |
| getDisplayNames(int field, int style, Locale locale) | Map<String,Integer> | 주어진 스타일과 로케일에 대한 캘린더 필드의 모든 이름과 해당 필드 값이 포함된 Map을 반환합니다. |
| getFirstDayOfWeek() | int | 주의 첫 번째 요일이 무엇인지 가져옵니다. 예를 들어, 미국에서는 일요일, 프랑스에서는 월요일입니다. |
| getGreatestMinimum(int field) | abstract int | 이 캘린더 인스턴스의 주어진 캘린더 필드에 대한 최대 최소값을 반환합니다. |
| getInstance() | static Calendar | 기본 시간대와 로케일을 사용하여 캘린더를 가져옵니다. |
| getInstance(Locale aLocale) | static Calendar | 기본 시간대와 지정된 로케일을 사용하여 캘린더를 가져옵니다. |
| getInstance(TimeZone zone) | static Calendar | 지정된 시간대와 기본 로케일을 사용하여 캘린더를 가져옵니다. |
| getInstance(TimeZone zone, Locale aLocale) | static Calendar | 지정된 시간대와 로케일을 사용하여 캘린더를 가져옵니다. |
| getLeastMaximum(int field) | abstract int | 이 캘린더 인스턴스의 주어진 캘린더 필드에 대한 최소 최대값을 반환합니다. |
| getMaximum(int field) | abstract int | 이 캘린더 인스턴스의 주어진 캘린더 필드에 대한 최대값을 반환합니다. |
| getMinimalDaysInFirstWeek() | int | 년의 첫주에 요구되는 최소 일수가 무엇인지 가져옵니다. |
| getMinimum(int field) | abstract int | 이 캘린더 인스턴스의 주어진 캘린더 필드에 대한 최소값을 반환합니다. |
| getTime() | Date | 이 캘린더의 시간 값(태양열의 밀리초 오프셋)을 나타내는 Date 객체를 반환합니다. |
| getTimeInMillis() | long | 이 캘린더의 시간 값을 밀리초로 반환합니다. |
| getTimeZone() | TimeZone | 시간대를 가져옵니다. |
| getWeeksInWeekYear() | int | 이 캘린더가 나타내는 주년의 주 수를 반환합니다. |
| getWeekYear() | int | 이 캘린더가 나타내는 주년을 반환합니다. |
| hashCode() | int | 이 캘린더의 해시 코드를 반환합니다. |
| internalGet(int field) | protected int | 주어진 캘린더 필드의 값을 반환합니다. |
| isLenient() | boolean | 날짜/시간 해석이 유연한지 아닌지를 나타냅니다. |
| isSet(int field) | boolean | 주어진 캘린더 필드에 값이 설정되어 있는지 여부를 결정합니다 |
| isWeekDateSupported() | boolean | 주 날짜가 지원되는지 여부를 반환합니다. |
| roll(int field, boolean up) | abstract void | 지정된 필드의 값을 증가 또는 감소시킵니다. |
| roll(int field, int amount) | void | 지정된 필드의 값을 지정된 양만큼 증가 또는 감소시킵니다. |
| set(int field, int value) | void | 지정된 필드의 값을 설정합니다. |
| set(int year, int month, int date) | void | 년, 월, 일을 설정합니다. |
| set(int year, int month, int date, int hourOfDay, int minute) | void | 년, 월, 일, 시간, 분을 설정합니다. |
| set(int year, int month, int date, int hourOfDay, int minute, int second) | void | 년, 월, 일, 시간, 분, 초를 설정합니다. |
| setFirstDayOfWeek(int value) | void | 주의 첫 번째 날을 설정합니다. |
| setLenient(boolean lenient) | void | 날짜/시간 구문 분석의 엄격성을 설정합니다. |
| setMinimalDaysInFirstWeek(int value) | void | 첫 주에 있는 최소 일수를 설정합니다. |
| setTime(Date date) | void | 시간을 Date 객체로 설정합니다. |
| setTimeInMillis(long millis) | void | 시간을 밀리초로 설정합니다. |
| setTimeZone(TimeZone value) | void | TimeZone을 설정합니다. |
| setWeekDate(int weekYear, int weekOfYear, int dayOfWeek) | void | 주 날짜를 설정합니다. |
| toString | String | 이 캘린더의 문자열 표현을 반환합니다. |
Calendar (Java SE 11 & JDK 11 )
Adds or subtracts (up/down) a single unit of time on the given time field without changing larger fields. For example, to roll the current date up by one day, you can achieve it by calling: roll(Calendar.DATE, true). When rolling on the year or Calendar.YE
docs.oracle.com
3) Calendar Field
| 필드 | 리턴 값 | 설명 |
| ALL_STYLES | static int | 모든 스타일을 나타냅니다. |
| AM | static int | 오전을 나타냅니다. |
| AM_PM | static int | 오전/오후를 나타냅니다. |
| APRIL | static int | 4월을 나타냅니다. |
| areFieldsSet | protected boolean | 필드 설정 여부를 나타냅니다. |
| AUGUST | static int | 8월을 나타냅니다. |
| DATE | static int | 일자를 나타냅니다. |
| DAY_OF_MONTH | static int | 월의 일자를 나타냅니다. |
| DAY_OF_WEEK | static int | 주의 요일을 나타냅니다. |
| DAY_OF_WEEK_IN_MONTH | static int | 월의 특정 주의 요일을 나타냅니다. |
| DAY_OF_YEAR | static int | 연의 일자를 나타냅니다. |
| DECEMBER | static int | 12월을 나타냅니다. |
| DST_OFFSET | static int | 일광절약시간 오프셋을 나타냅니다. |
| ERA | static int | 연호를 나타냅니다. |
| FEBRUARY | static int | 2월을 나타냅니다. |
| FIELD_COUNT | static int | 필드 수를 나타냅니다. |
| fields | protected int[] | 필드 배열을 나타냅니다. |
| FRIDAY | static int | 금요일을 나타냅니다. |
| HOUR | static int | 시간을 나타냅니다. |
| HOUR_OF_DAY | static int | 일의 시간을 나타냅니다. |
| isSet | protected boolean[] | 필드 설정 배열을 나타냅니다. |
| isTimeSet | protected boolean | 시간 설정 여부를 나타냅니다. |
| JANUARY | static int | 1월을 나타냅니다. |
| JULY | static int | 7월을 나타냅니다. |
| JUNE | static int | 6월을 나타냅니다. |
| LONG | static int | 긴 형식을 나타냅니다. |
| LONG_FORMAT | static int | 긴 형식의 포맷을 나타냅니다. |
| LONG_STANDALONE | static int | 독립적인 긴 형식을 나타냅니다. |
| MARCH | static int | 3월을 나타냅니다. |
| MAY | static int | 5월을 나타냅니다. |
| MILLISECOND | static int | 밀리초를 나타냅니다. |
| MINUTE | static int | 분을 나타냅니다. |
| MONDAY | static int | 월요일을 나타냅니다. |
| MONTH | static int | 월을 나타냅니다. |
| NARROW_FORMAT | static int | 좁은 형식을 나타냅니다. |
| NARROW_STANDALONE | static int | 독립적인 좁은 형식을 나타냅니다. |
| NOVEMBER | static int | 11월을 나타냅니다. |
| OCTOBER | static int | 10월을 나타냅니다. |
| PM | static int | 오후를 나타냅니다. |
| SATURDAY | static int | 토요일을 나타냅니다. |
| SECOND | static int | 초를 나타냅니다. |
| SEPTEMBER | static int | 9월을 나타냅니다. |
| SHORT | static int | 짧은 형식을 나타냅니다. |
| SHORT_FORMAT | static int | 짧은 형식의 포맷을 나타냅니다. |
| SHORT_STANDALONE | static int | 독립적인 짧은 형식을 나타냅니다. |
| SUNDAY | static int | 일요일을 나타냅니다. |
| THURSDAY | static int | 목요일을 나타냅니다. |
| time | protected long | 시간을 나타냅니다. |
| TUESDAY | static int | 화요일을 나타냅니다. |
| UNDECIMBER | static int | 13월을 나타냅니다. |
| WEDNESDAY | static int | 수요일을 나타냅니다. |
| WEEK_OF_MONTH | static int | 월의 주를 나타냅니다. |
| WEEK_OF_YEAR | static int | 연의 주를 나타냅니다. |
| YEAR | static int | 연을 나타냅니다. |
| ZONE_OFFSET | static int | 시간대 오프셋을 나타냅니다. |
Calendar (Java SE 11 & JDK 11 )
Adds or subtracts (up/down) a single unit of time on the given time field without changing larger fields. For example, to roll the current date up by one day, you can achieve it by calling: roll(Calendar.DATE, true). When rolling on the year or Calendar.YE
docs.oracle.com
4) Calendar 사용예시
// 오늘 날짜와 시간
Calendar now = Calendar.getInstance();
// 현재 연도
int year = now.get(Calendar.YEAR);
// 현재 월 (0이 1월이므로 +1 해줌)
int month = now.get(Calendar.MONTH) + 1;
// 현재 일
int day = now.get(Calendar.DAY_OF_MONTH);
System.out.println("오늘은 " + year + "년 " + month + "월 " + day + "일입니다.");
String str4 = "2019/05/01 00:59:29";
SimpleDateFormat formatter4 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date resultDate;
Date strToDate2 = null;
try {
strToDate2 = formatter.parse(str4);
log.debug("strToDate :: " + strToDate2); // strToDate :: Wed May 01 00:59:29 KST 2019
// Date 타입에 9시간을 더합니다.
Calendar cal1 = Calendar.getInstance();
cal1.setTime(strToDate2); // 시간 설정
cal1.add(Calendar.HOUR, 9); // 시간 연산
resultDate = new Date(cal1.getTimeInMillis());
log.debug("resultDate :: " + resultDate);
} catch (ParseException e) {
throw new RuntimeException(e);
}
Calendar cal1 = Calendar.getInstance();
cal1.setTime(resultDate); // 시간 설정
cal1.add(Calendar.HOUR, 9); // 시간 연산
Date resultSumDate = new Date(cal1.getTimeInMillis()); // Wed May 01 09:59:29 KST 2019
오늘도 감사합니다. 😀
