728x170
해당 글에서는 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 | 이 캘린더의 문자열 표현을 반환합니다. |
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 | 시간대 오프셋을 나타냅니다. |
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
오늘도 감사합니다. 😀
그리드형