Skip to content
주진현 edited this page Aug 30, 2024 · 7 revisions

java.time.Year 클래스는 연도를 표현하는 불변 클래스입니다.

1 Instance 생성

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

1.1 Int.toYear(): Year

주어진 Int를 연(year)으로 해석하고 Year로 파싱합니다.

import io.github.harryjhin.java.time.extension.toYear
import java.time.Year

val year: Year = 2024.toYear()

Int 값이 유효한 연도가 아닌 경우 DateTimeException이 발생합니다.

val year: Year = (Year.MAX_VALUE + 1).toYear() // throw DateTimeException

1.2 Int.toYearOrNull(): Year?

주어진 Int를 연(year)으로 해석하고 Year로 파싱하고 예외가 발생하면 null을 반환합니다.

import io.github.harryjhin.java.time.extension.toYearOrNull
import java.time.Year

val year: Year? = 2024.toYearOrNull()

Int 값이 유효한 연도가 아닌 경우 null을 반환합니다.

val year: Year? = (Year.MAX_VALUE + 1).toYearOrNull() // null

1.3 Long.toYear(): Year

주어진 Long을 연(year)으로 해석하고 Year로 파싱합니다.

import io.github.harryjhin.java.time.extension.toYear
import java.time.Year

val year: Year = 2024L.toYear()

Long 값이 Int 범위를 벗어

1.4 Long.toYearOrNull(): Year?

주어진 Long을 연(year)으로 해석하고 Year로 파싱하고 예외가 발생하면 null을 반환합니다.

import io.github.harryjhin.java.time.extension.toYearOrNull
import java.time.Year

val year: Year? = 2024L.toYearOrNull() // 2024

Long 값이 Int 범위를 벗어나거나 유효한 연도가 아닌 경우 null을 반환합니다.

val year: Year? = (Year.MAX_VALUE + 1L).toYearOrNull() // null

1.5 String.toYear(): Year

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

import io.github.harryjhin.java.time.extension.toYear
import java.time.Year

val year: Year = "2024".toYear()

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

val year: Year = "24".toYear() // throw DateTimeParseException

1.6 String.toYearOrNull(): Year?

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

import io.github.harryjhin.java.time.extension.toYearOrNull
import java.time.Year

val year: Year? = "2024".toYearOrNull() // 2024

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

val year: Year? = "24".toYearOrNull() // null

1.7 String.toYear(String): Year

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

import io.github.harryjhin.java.time.extension.toYear
import java.time.Year

val year: Year = "24".toYear("yy") // 2024

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

val year: Year = "24".toYear("ABC") // throw IllegalArgumentException

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

val year: Year = "24/01".toYear("yy") // throw DateTimeParseException

1.8 String.toYearOrNull(String): Year?

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

import io.github.harryjhin.java.time.extension.toYearOrNull
import java.time.Year

val year: Year? = "24".toYearOrNull("yy") // 2024

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

val year: Year? = "24".toYearOrNull("ABC") // null

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

val year: Year? = "24/01".toYearOrNull("yy") // null

1.9 String.toYear(DateTimeFormatter): Year

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

import io.github.harryjhin.java.time.extension.toYear
import java.time.Year
import java.time.format.DateTimeFormatter

val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("yy")
val year: Year = "24".toYear(formatter) // 2024

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

val year: Year = "24/01".toYear(formatter) // throw DateTimeParseException

1.10 String.toYearOrNull(DateTimeFormatter): Year?

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

import io.github.harryjhin.java.time.extension.toYearOrNull
import java.time.Year
import java.time.format.DateTimeFormatter

val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("yy")
val year: Year? = "24".toYearOrNull(formatter) // 2024

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

val year: Year? = "24/01".toYearOrNull(formatter) // null

2 기간

Year 인스턴스는 연도 정보만 가지고 있습니다. 따라서 연도는 Period로 변환할 수 있습니다.

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

2.1 Year.years: Period

Year 인스턴스에서 연도 값을 가져오려면 years 확장 프로퍼티를 사용하십시오.

import io.github.harryjhin.java.time.extension.toYear
import io.github.harryjhin.java.time.extension.years
import java.time.Period
import java.time.Year

val year: Year = 2024.toYear()
val period: Period = year.years // P2024Y

3 연산

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

3.1 Year.plus(TemporalAmount): Year

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

import io.github.harryjhin.java.time.extension.toYear
import io.github.harryjhin.java.time.extension.years
import java.time.Year

var year: Year = 2024.toYear()
year += 1.years // 2025

3.2 Year.minus(TemporalAmount): Year

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

import io.github.harryjhin.java.time.extension.toYear
import io.github.harryjhin.java.time.extension.years
import java.time.Year

var year: Year = 2024.toYear()
year -= 1.years // 2023

4 결합

4.1 Year.at(Month): YearMonth

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

import io.github.harryjhin.java.time.extension.at
import io.github.harryjhin.java.time.extension.toMonth
import io.github.harryjhin.java.time.extension.toYear
import java.time.Month
import java.time.Year
import java.time.YearMonth

val year: Year = 2024.toYear()
val month: Month = 1.toMonth()

val yearMonth: YearMonth = year at month // 2024-01

4.2 Year.at(MonthDay): LocalDate

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

import io.github.harryjhin.java.time.extension.at
import io.github.harryjhin.java.time.extension.toYear
import java.time.MonthDay
import java.time.Year
import java.time.LocalDate

val year: Year = 2024.toYear()
val monthDay: MonthDay = MonthDay.of(1, 1)

val date: LocalDate = year at monthDay // 2024-01-01

4.3 Year.at(Int): LocalDate

YearInt(dayOfYear)를 결합하여 LocalDate 인스턴스를 생성합니다.

import io.github.harryjhin.java.time.extension.at
import io.github.harryjhin.java.time.extension.toYear
import java.time.Year
import java.time.LocalDate

val year: Year = 2024.toYear()
val date: LocalDate = year at 32 // 2024-02-01

5 비교

5.1 Year.between(Year): Period

Year 인스턴스 사이의 연도 차이를 계산하고 Period로 반환합니다.

import io.github.harryjhin.java.time.extension.between
import io.github.harryjhin.java.time.extension.toYear
import java.time.Year
import java.time.Period

val start: Year = 2024.toYear()
val end: Year = 2025.toYear()

val period: Period = start between end // P1Y

6 포맷

6.1 Year.toString(String): String

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

import io.github.harryjhin.java.time.extension.toString
import io.github.harryjhin.java.time.extension.toYear
import java.time.Year

val year: Year = 2024.toYear()
val result: String = year.toString("yy") // 24

6.2 Year.toString(DateTimeFormatter): String

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

import io.github.harryjhin.java.time.extension.toString
import io.github.harryjhin.java.time.extension.toYear
import java.time.Year
import java.time.format.DateTimeFormatter

val year: Year = 2024.toYear()
val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("yy")
val result: String = year.toString(formatter) // 24
Clone this wiki locally