Skip to content

HarryJhin/java-time-extensions

Repository files navigation

Deploy static content to Pages CI Publish to Sonatype Maven Central Kotlin KDoc link License

Kotlin용 java.time.* 확장 라이브러리

java-time-extensionsjava.time.* 패키지를 확장하여 Kotlin 사용자에게 더 편리한 기능을 제공합니다. 이 라이브러리는 Kotlin 개발자들이 java.time.* API를 사용할 때 자주 필요한 기능을 쉽게 사용할 수 있도록 도와줍니다.

사용 예시는 Wiki를 참조하세요.

주요 특징

java-time-extensions는 Kotlin 사용자들에게 java.time.* 패키지의 다양한 클래스(LocalDate, LocalTime, LocalDateTime 등)를 확장하여 더욱 편리하게 사용할 수 있도록 돕는 라이브러리입니다. 이 라이브러리는 확장 함수와 확장 프로퍼티를 통해 기존 API를 간편하게 확장하여 사용할 수 있는 기능을 제공합니다.

주요 기능들은 다음과 같습니다:

  • 다양한 날짜 및 시간 타입 확장: java.time.* 패키지의 여러 클래스에 대한 유용한 확장 기능을 제공합니다.
  • 편리한 인스턴스 생성: String, Int, Long 등의 다양한 타입으로부터 쉽게 인스턴스를 생성할 수 있습니다.
  • 유연한 타입 변환: 날짜 및 시간 인스턴스를 다른 타입으로 쉽게 변환할 수 있도록 도와줍니다.
  • Safety 타입 변환: 다양한 타입 변환 함수들은 예외를 던지지 않고 null을 반환할 수 있도록 지원합니다.
  • 직관적인 중위 함수: LocalDateLocalTime을 결합하여 LocalDateTime을 만들거나, 두 LocalDate 인스턴스 간의 차이를 계산하는 등, 기존 메서드를 사용하는 것보다 직관적인 문법을 제공합니다.

핵심 개념

java-time-extensions생성, 기간, 연산, 분해, 결합, 비교, 포맷팅을 위한 다양한 확장 함수를 제공합니다.

생성

java-time-extensions는 다양한 타입으로부터 java.time.* 인스턴스를 생성할 수 있는 확장 함수를 제공합니다.

val date: LocalDate = "2021-01-01".toLocalDate() // 2021-01-01

기간

java-time-extensions는 기간 개념을 다루는 확장 기능을 제공합니다.

val period: Pariod = 1.days // P1D

연산

java-time-extensions는 날짜 및 시간 인스턴스의 연산을 위해 확장 기능을 제공합니다.

val date: LocalDate = "2021-01-01".toLocalDate() + 1.days // 2021-01-02

분해

java-time-extensions는 날짜 및 시간 인스턴스를 분해하는 확장 기능을 제공합니다.

val year: Year = "2021-01-01".toLocalDate().toYear() // 2021

결합

java-time-extensions는 날짜 및 시간 인스턴스를 결합하는 확장 기능을 제공합니다.

val dateTime: LocalDateTime = "2021-01-01".toLocalDate() at "12:00".toLocalTime() // 2021-01-01T12:00

비교

java-time-extensions는 날짜 및 시간 인스턴스를 비교하는 확장 기능을 제공합니다.

val period: Period = "2021-01-01".toLocalDate() betweeb "2021-02-01".toLocalDate() // P1M

포맷팅

java-time-extensions는 날짜 및 시간 인스턴스를 포맷팅하는 확장 기능을 제공합니다.

val string: String = "2021-01-01".toLocalDate().toString("yyyyMMdd") // 20210101

kotlinx - datetime 비교

kotlinx-datetime 은 시간대를 포함한 civil time (상용시) 을 다루는데 특화된 라이브러리입니다. 예를 들어, kotlinx - datetime은 모든 시간 객체에 시간대 정보를 포함시키며, 이를 통해 로컬 시간대 (예: UTC + 9)와 관련된 작업을 쉽게 처리할 수 있습니다. 이 라이브러리는 시간대 정보가 필요하지 않은 단순한 연산 (예: 한 달 더하기)도 지원합니다.

반면, java-time-extensionsjava.time.* 패키지를 기반으로 하여, 기존의 API를 더 편리하게 사용할 수 있도록 돕는 확장 기능을 제공합니다. kotlinx-datetime 처럼 새로운 엔티티나 시간대에 대한 복잡한 처리를 추가하지는 않습니다. 대신, java.time.* 패키지를 사용하는 Kotlin 사용자들이 더 쉽게 날짜와 시간을 다룰 수 있도록 하는 것이 이 라이브러리의 주된 목적입니다. 따라서 java-time-extensionskotlinx-datetime 을 대체하기 위한 것이 아니라, 이미 java.time.* 을 사용하고 있는 Kotlin 개발자들에게 더 나은 개발 경험을 제공 하는 데 초점을 맞추고 있습니다.

Gradle 설정

build.gradle

repositories {
    mavenCentral()
}

dependencies {
    implementation 'io.github.harryjhin:java-time-extensions:$version'
}

build.gradle.kts

repositories {
    mavenCentral()
}

dependencies {
    implementation("io.github.harryjhin:java-time-extensions:$version")
}

License

라이센스 권한 및 제한사항은 LICENSE 파일을 참조하세요 (MIT).