Calendar — 날짜-시간 변환 추상 클래스

Calendar — 날짜-시간 변환 추상 클래스

특정 시간 순간(instant)과 YEAR, MONTH, DAY_OF_MONTH, HOUR 같은 달력 필드 집합 사이를 변환하는 메서드를 제공하는 추상 클래스예요.

출처: Java API Reference

본문

시그니처

public abstract class Calendar extends Object
    implements Serializable, Cloneable, Comparable<Calendar>

구현된 인터페이스: Serializable, Cloneable, Comparable<Calendar>.

설명

Calendar 클래스는 특정 시간 순간과 달력 필드 집합(예: YEAR, MONTH, DAY_OF_MONTH, HOUR) 사이를 변환하고, 다음 주의 날짜 얻기 같은 작업으로 달력 필드를 조작하는 메서드를 제공하는 추상 클래스예요. 시간 순간은 에포크(1970년 1월 1일 00:00:00.000 GMT, 그레고리)로부터의 오프셋인 밀리초 값으로 표현할 수 있어요.

다른 로케일 민감 클래스처럼 Calendar는 일반적으로 유용한 이 유형의 객체를 얻기 위한 클래스 메서드 getInstance를 제공해요. CalendargetInstance 메서드는 달력 필드가 현재 날짜·시간으로 초기화된 Calendar 객체를 반환해요:

Calendar rightNow = Calendar.getInstance();

Calendar 객체는 특정 언어와 달력 스타일(예: 일본-그레고리, 일본-전통)에 대한 날짜-시간 포맷팅을 구현하는 데 필요한 모든 달력 필드 값을 만들어낼 수 있어요. Calendar는 특정 달력 필드가 반환하는 값의 범위와 그 의미를 정의해요. 예를 들어 모든 달력에서 달력 체계의 첫 번째 달은 MONTH == JANUARY 값을 가져요. ERA 같은 다른 값은 구체적인 하위 클래스가 정의해요.

필드 값 가져오기와 설정

달력 필드 값은 set 메서드를 호출해 설정할 수 있어요. 설정된 필드 값은 시간 값(에포크부터의 밀리초)이나 달력 필드 값을 계산할 필요가 있을 때까지 해석되지 않아요. get, getTimeInMillis, getTime, add, roll 호출은 그런 계산을 포함해요.

달력은 관대함(Leniency)엄격함(Strictness) 두 가지 모드를 가져요. Lenient(관대한) 모드에서는 잘못된 필드 값이 다음 유효 값으로 자동으로 조정되고, Strict(엄격한) 모드에서는 잘못된 필드 값이 예외를 발생시켜요.

주요 메서드

  • getInstance() — 기본 로케일과 시간대를 사용해 달력을 얻어요.
  • get(int field) — 지정한 달력 필드의 값을 반환해요.
  • set(int field, int value) — 지정한 달력 필드를 지정한 값으로 설정해요.
  • add(int field, int amount) — 지정한 달력 필드에 지정한 양(부호 있는)의 시간을 더하거나 빼요.
  • roll(int field, int amount) — 더 큰 필드를 변경하지 않고 지정한 시간 양을 지정한 달력 필드에 더하거나 빼요.
  • getTime() — 이 Calendar의 시간 값을 나타내는 Date 객체를 반환해요.
  • setTime(Date date) — 지정한 Date로 이 Calendar의 시간을 설정해요.
  • getTimeInMillis() — 이 Calendar의 시간 값을 밀리초로 반환해요.
  • getActualMaximum(int field) — 지정한 필드가 이 달력의 현재 시간 값에 대해 가질 수 있는 최대값을 반환해요.
  • compareTo(Calendar anotherCalendar) — 두 Calendar 객체의 시간 값을 비교해요.

더 알아보기 (Learn more)