MonthDay — 월-일(월과 일의 조합)

MonthDay — 월-일(월과 일의 조합)

ISO-8601 달력 체계에서 월과 일의 조합을 나타내는 불변 객체예요. 예: --12-03.

출처: Java API Reference

본문

시그니처

public final class MonthDay extends Object
    implements TemporalAccessor, TemporalAdjuster, Comparable<MonthDay>, Serializable

구현된 인터페이스: Serializable, Comparable<MonthDay>, TemporalAccessor, TemporalAdjuster.

설명

MonthDay는 불변(immutable) 날짜-시간 객체로, 월과 일(day-of-month)의 조합을 나타내요. 분기 중 몇 번째인지 같은 월과 일에서 파생할 수 있는 모든 필드를 얻을 수 있어요.

이 클래스는 연도, 시간, 시간대를 저장하거나 나타내지 않아요. 예를 들어 "12월 3일"이라는 값을 MonthDay에 저장할 수 있어요.

MonthDay는 연도를 갖지 않으므로 2월 29일(윤일)도 유효한 것으로 간주돼요.

이 클래스는 Temporal 대신 TemporalAccessor를 구현해요. 2월 29일이 유효한지 여부는 외부 정보 없이는 정의할 수 없어서 plus/minus 구현을 막기 때문이에요. 이와 관련해 MonthDayMONTH_OF_YEARDAY_OF_MONTH 필드에만 쿼리·설정 접근을 제공해요.

이 클래스는 값 기반(value-based) 클래스예요. 프로그래머는 서로 같은 인스턴스를 교환 가능하게 취급해야 하며, 동기화에 인스턴스를 사용하면 안 돼요. 비교에는 equals 메서드를 사용해야 해요.

주요 메서드

  • of(int month, int dayOfMonth) — 월과 일에서 MonthDay 인스턴스를 얻어요.
  • parse(CharSequence text) — ISO-8601 텍스트에서 MonthDay 인스턴스를 얻어요.
  • atYear(int year) — 이 월-일을 연도와 결합해 LocalDate를 만들어요.
  • format(DateTimeFormatter formatter) — 지정한 포맷터를 사용해 이 월-일을 포맷해요.
  • getMonth() — 월-기준 월 필드를 얻어요.
  • getDayOfMonth() — 일 필드를 얻어요.
  • isValidYear(int year) — 이 월-일이 지정한 연도에서 유효한지 확인해요.
  • isValidLeapYear() — 이 월-일이 윤년에서 유효한지 확인해요.

더 알아보기 (Learn more)