MonthDay — 월-일(월과 일의 조합)
MonthDay — 월-일(월과 일의 조합)
ISO-8601 달력 체계에서 월과 일의 조합을 나타내는 불변 객체예요. 예: --12-03.
본문
시그니처
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 구현을 막기 때문이에요. 이와 관련해 MonthDay는 MONTH_OF_YEAR와 DAY_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()— 이 월-일이 윤년에서 유효한지 확인해요.