Skip to content

YearMonth

주진현 edited this page Aug 30, 2024 · 4 revisions

java.time.YearMonth 클래스는 연도와 월을 나타내는 클래스입니다.

1 Instance 생성

YearMonth 인스턴스를 생성하는 방법은 다음과 같습니다:

1.1 String.toYearMonth(): YearMonth

주어진 StringYearMonth로 파싱합니다. String은 라이브러리 기본 구성의 패턴을 따라야 합니다.

import io.github.harryjhin.java.time.extension.toYearMonth
import java.time.YearMonth

val yearMonth: YearMonth = "2024-01".toYearMonth()

String 값이 지정한 형식이 아니라면 DateTimeParseException이 발생합니다.

val yearMonth: YearMonth = "24-01".toYearMonth() // DateTimeParseException

1.2 String.toYearMonthOrNull(): YearMonth?

주어진 StringYearMonth로 파싱하고 예외가 발생하면 null을 반환합니다. String은 라이브러리 기본 구성의 패턴을 따라야 합니다.

import io.github.harryjhin.java.time.extension.toYearMonthOrNull
import java.time.YearMonth

val yearMonth: YearMonth? = "2024-01".toYearMonthOrNull()

String 값이 지정한 형식이 아니라면 null을 반환합니다.

val yearMonth: YearMonth? = "24-01".toYearMonthOrNull() // null

1.3 String.toYearMonth(String): YearMonth

주어진 String을 지정한 패턴을 사용하여 YearMonth로 파싱합니다.

import io.github.harryjhin.java.time.extension.toYearMonth
import java.time.YearMonth

val yearMonth: YearMonth = "24-01".toYearMonth("yy-MM") // 2024-01

패턴이 올바른 형식이 아니라면 IllegalArgumentException이 발생합니다.

val yearMonth: YearMonth = "24-01".toYearMonth("ABC") // IllegalArgumentException

String 값이 지정한 형식이 아니라면 DateTimeParseException이 발생합니다.

val yearMonth: YearMonth = "24/01".toYearMonth("yy-MM") // DateTimeParseException

1.4 String.toYearMonthOrNull(String): YearMonth?

주어진 String을 지정한 패턴을 사용하여 파싱하고 예외가 발생하면 null을 반환합니다.

import io.github.harryjhin.java.time.extension.toYearMonthOrNull
import java.time.YearMonth

val yearMonth: YearMonth? = "24-01".toYearMonthOrNull("yy-MM") // 2024-01

패턴이 올바른 형식이 아니라면 null을 반환합니다.

val yearMonth: YearMonth? = "24-01".toYearMonthOrNull("ABC") // null

String 값이 지정한 형식이 아니라면 null을 반환합니다.

val yearMonth: YearMonth? = "24/01".toYearMonthOrNull("yy-MM") // null

1.5 String.toYearMonth(DateTimeFormatter): YearMonth

주어진 StringDateTimeFormatter를 사용하여 YearMonth로 파싱합니다.

import io.github.harryjhin.java.time.extension.toDateTimeFormatter
import io.github.harryjhin.java.time.extension.toYearMonth
import java.time.YearMonth
import java.time.format.DateTimeFormatter

val formatter: DateTimeFormatter = "yy-MM".toDateTimeFormatter()
val yearMonth: YearMonth = "24-01".toYearMonth(formatter) // 2024-01

String 값이 지정한 형식이 아니라면 DateTimeParseException이 발생합니다.

val yearMonth: YearMonth = "24/01".toYearMonth(formatter) // DateTimeParseException

1.6 String.toYearMonthOrNull(DateTimeFormatter): YearMonth?

주어진 StringDateTimeFormatter를 사용하여 파싱하고 예외가 발생하면 null을 반환합니다.

import io.github.harryjhin.java.time.extension.toDateTimeFormatter
import io.github.harryjhin.java.time.extension.toYearMonthOrNull
import java.time.YearMonth
import java.time.format.DateTimeFormatter

val formatter: DateTimeFormatter = "yy-MM".toDateTimeFormatter()
val yearMonth: YearMonth? = "24-01".toYearMonthOrNull(formatter) // 2024-01

String 값이 지정한 형식이 아니라면 null을 반환합니다.

val yearMonth: YearMonth? = "24/01".toYearMonthOrNull(formatter) // null

2 기간

YearMonth 인스턴스는 연, 월 정보를 가지고 있으므로, 이 정보를 Period로 가져올 수 있습니다.

지원하는 확장 프로퍼티는 다음과 같습니다:

2.1 YearMonth.years: Period

YearMonth 인스턴스에서 연(year)을 Period로 가져옵니다.

import io.github.harryjhin.java.time.extension.toYearMonth
import io.github.harryjhin.java.time.extension.years
import java.time.YearMonth
import java.time.Period

val yearMonth: YearMonth = "2024-01".toYearMonth()
val period: Period = yearMonth.years // P2024Y

2.2 YearMonth.months: Period

YearMonth 인스턴스에서 월(month)을 Period로 가져옵니다.

import io.github.harryjhin.java.time.extension.toYearMonth
import io.github.harryjhin.java.time.extension.months
import java.time.YearMonth
import java.time.Period

val yearMonth: YearMonth = "2024-01".toYearMonth()
val period: Period = yearMonth.months // P1M

3 연산

YearMonth 인스턴스에서 지원하는 연산은 다음과 같습니다:

3.1 YearMonth.plus(TemporalAmount): YearMonth

YearMonth 인스턴스에 TemporalAmount를 더합니다.

import io.github.harryjhin.java.time.extension.toYearMonth
import io.github.harryjhin.java.time.extension.years
import java.time.YearMonth

var yearMonth: YearMonth = "2024-01".toYearMonth()
yearMonth += 1.years // 2025-01

3.2 YearMonth.minus(TemporalAmount): YearMonth

YearMonth 인스턴스에서 TemporalAmount를 뺍니다.

import io.github.harryjhin.java.time.extension.toYearMonth
import io.github.harryjhin.java.time.extension.months
import java.time.YearMonth

var yearMonth: YearMonth = "2024-01".toYearMonth()
yearMonth -= 1.months // 2023-12

4 결합

4.1 YearMonth.at(dayOfMonth): LocalDate

YearMonthdayOfMonth를 결합하여 LocalDate 인스턴스를 생성합니다.

import io.github.harryjhin.java.time.extension.at
import io.github.harryjhin.java.time.extension.toYearMonth
import java.time.YearMonth
import java.time.LocalDate

val yearMonth: YearMonth = "2024-01".toYearMonth()
val date: LocalDate = yearMonth at 1 // 2024-01-01

5 비교

5.1 YearMonth.between(YearMonth): Period

YearMonth 인스턴스 사이의 날짜 간격을 계산하여 Period로 반환합니다.

import io.github.harryjhin.java.time.extension.between
import io.github.harryjhin.java.time.extension.toYearMonth
import java.time.YearMonth
import java.time.Period

val start: YearMonth = "2024-01".toYearMonth()
val end: YearMonth = "2025-01".toYearMonth()
val period: Period = start between end // P1Y

6 포맷

YearMonth 인스턴스를 String으로 변환하려면 다음 확장 함수를 사용하십시오:

5.1 YearMonth.toString(String): String

YearMonth 인스턴스를 지정한 패턴을 사용하여 String으로 포매팅합니다.

import io.github.harryjhin.java.time.extension.toString
import io.github.harryjhin.java.time.extension.toYearMonth
import java.time.YearMonth

val yearMonth: YearMonth = "2024-01".toYearMonth()
val result: String = yearMonth.toString("yyMM") // 2401

5.2 YearMonth.toString(DateTimeFormatter): String

YearMonth 인스턴스를 DateTimeFormatter를 사용하여 String으로 포매팅합니다.

import io.github.harryjhin.java.time.extension.toString
import io.github.harryjhin.java.time.extension.toYearMonth
import java.time.YearMonth
import java.time.format.DateTimeFormatter

val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("yyMM")
val yearMonth: YearMonth = "2024-01".toYearMonth()
val result: String = yearMonth.toString(formatter) // 2401