Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/harryjhin/java-time-extensions
java.time package extension library for the Kotlin language
https://github.com/harryjhin/java-time-extensions
dokka github-pages gradle jreleaser kotlin library maven-central maven-publish
Last synced: 28 days ago
JSON representation
java.time package extension library for the Kotlin language
- Host: GitHub
- URL: https://github.com/harryjhin/java-time-extensions
- Owner: HarryJhin
- License: mit
- Created: 2024-08-11T18:29:55.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2024-09-05T07:57:48.000Z (2 months ago)
- Last Synced: 2024-10-10T01:43:28.402Z (28 days ago)
- Topics: dokka, github-pages, gradle, jreleaser, kotlin, library, maven-central, maven-publish
- Language: Kotlin
- Homepage: https://harryjhin.github.io/java-time-extensions/
- Size: 327 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Deploy static content to Pages](https://github.com/HarryJhin/java-time-extensions/actions/workflows/static.yml/badge.svg)](https://github.com/HarryJhin/java-time-extensions/actions/workflows/static.yml)
[![CI](https://github.com/HarryJhin/java-time-extensions/actions/workflows/ci.yml/badge.svg)](https://github.com/HarryJhin/java-time-extensions/actions/workflows/ci.yml)
[![Publish to Sonatype](https://github.com/HarryJhin/java-time-extensions/actions/workflows/publish.yml/badge.svg)](https://github.com/HarryJhin/java-time-extensions/actions/workflows/publish.yml)
[![Maven Central](https://img.shields.io/maven-central/v/io.github.harryjhin/java-time-extensions.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/io.github.harryjhin/java-time-extensions)
[![Kotlin](https://img.shields.io/badge/kotlin-2.0.0-blue.svg?logo=kotlin)](http://kotlinlang.org)
[![KDoc link](https://img.shields.io/badge/API_reference-KDoc-blue)](https://harryjhin.github.io/java-time-extensions/)
[![License](https://img.shields.io/github/license/HarryJhin/java-time-extensions)](https://opensource.org/licenses/MIT)# Kotlin용 java.time.* 확장 라이브러리
`java-time-extensions`는 `java.time.*` 패키지를 확장하여 Kotlin 사용자에게 더 편리한 기능을 제공합니다.
이 라이브러리는 Kotlin 개발자들이 `java.time.*` API를 사용할 때 자주 필요한 기능을 쉽게 사용할 수 있도록 도와줍니다.사용 예시는 [Wiki](https://github.com/HarryJhin/java-time-extensions/wiki)를 참조하세요.
## 주요 특징
`java-time-extensions`는 Kotlin 사용자들에게 `java.time.*` 패키지의 다양한 클래스(`LocalDate`, `LocalTime`, `LocalDateTime` 등)를
확장하여 더욱 편리하게 사용할 수 있도록 돕는 라이브러리입니다.
이 라이브러리는 확장 함수와 확장 프로퍼티를 통해 기존 API를 간편하게 확장하여 사용할 수 있는 기능을 제공합니다.주요 기능들은 다음과 같습니다:
- **다양한 날짜 및 시간 타입 확장**: `java.time.*` 패키지의 여러 클래스에 대한 유용한 확장 기능을 제공합니다.
- **편리한 인스턴스 생성**: `String`, `Int`, `Long` 등의 다양한 타입으로부터 쉽게 인스턴스를 생성할 수 있습니다.
- **유연한 타입 변환**: 날짜 및 시간 인스턴스를 다른 타입으로 쉽게 변환할 수 있도록 도와줍니다.
- **Safety 타입 변환**: 다양한 타입 변환 함수들은 예외를 던지지 않고 `null`을 반환할 수 있도록 지원합니다.
- **직관적인 중위 함수**: `LocalDate`와 `LocalTime`을 결합하여 `LocalDateTime`을 만들거나,
두 `LocalDate` 인스턴스 간의 차이를 계산하는 등, 기존 메서드를 사용하는 것보다 직관적인 문법을 제공합니다.## 핵심 개념
`java-time-extensions`는 **생성**, **기간**, **연산**, **분해**, **결합**, **비교**, **포맷팅**을 위한 다양한 확장 함수를 제공합니다.
### 생성
`java-time-extensions`는 다양한 타입으로부터 `java.time.*` 인스턴스를 생성할 수 있는 확장 함수를 제공합니다.
```kotlin
val date: LocalDate = "2021-01-01".toLocalDate() // 2021-01-01
```### 기간
`java-time-extensions`는 기간 개념을 다루는 확장 기능을 제공합니다.
```kotlin
val period: Pariod = 1.days // P1D
```### 연산
`java-time-extensions`는 날짜 및 시간 인스턴스의 연산을 위해 확장 기능을 제공합니다.
```kotlin
val date: LocalDate = "2021-01-01".toLocalDate() + 1.days // 2021-01-02
```### 분해
`java-time-extensions`는 날짜 및 시간 인스턴스를 분해하는 확장 기능을 제공합니다.
```kotlin
val year: Year = "2021-01-01".toLocalDate().toYear() // 2021
```### 결합
`java-time-extensions`는 날짜 및 시간 인스턴스를 결합하는 확장 기능을 제공합니다.
```kotlin
val dateTime: LocalDateTime = "2021-01-01".toLocalDate() at "12:00".toLocalTime() // 2021-01-01T12:00
```### 비교
`java-time-extensions`는 날짜 및 시간 인스턴스를 비교하는 확장 기능을 제공합니다.
```kotlin
val period: Period = "2021-01-01".toLocalDate() betweeb "2021-02-01".toLocalDate() // P1M
```### 포맷팅
`java-time-extensions`는 날짜 및 시간 인스턴스를 포맷팅하는 확장 기능을 제공합니다.
```kotlin
val string: String = "2021-01-01".toLocalDate().toString("yyyyMMdd") // 20210101
```## kotlinx - datetime 비교
`kotlinx-datetime` 은 시간대를 포함한 civil time (상용시) 을 다루는데 특화된 라이브러리입니다.
예를 들어, kotlinx - datetime은 모든 시간 객체에 시간대 정보를 포함시키며,
이를 통해 로컬 시간대 (예: UTC + 9)와 관련된 작업을 쉽게 처리할 수 있습니다.
이 라이브러리는 시간대 정보가 필요하지 않은 단순한 연산 (예: 한 달 더하기)도 지원합니다.반면, `java-time-extensions` 는 `java.time.*` 패키지를 기반으로 하여,
기존의 API를 더 편리하게 사용할 수 있도록 돕는 확장 기능을 제공합니다.
`kotlinx-datetime` 처럼 새로운 엔티티나 시간대에 대한 복잡한 처리를 추가하지는 않습니다.
대신, `java.time.*` 패키지를 사용하는 Kotlin 사용자들이 더 쉽게 날짜와 시간을 다룰 수 있도록 하는 것이 이 라이브러리의 주된 목적입니다.
따라서 `java-time-extensions` 는 `kotlinx-datetime` 을 대체하기 위한 것이 아니라,
이미 `java.time.*` 을 사용하고 있는 Kotlin 개발자들에게 **더 나은 개발 경험을 제공** 하는 데 초점을 맞추고 있습니다.## Gradle 설정
### build.gradle
```groovy
repositories {
mavenCentral()
}dependencies {
implementation 'io.github.harryjhin:java-time-extensions:$version'
}
```### build.gradle.kts
```kotlin
repositories {
mavenCentral()
}dependencies {
implementation("io.github.harryjhin:java-time-extensions:$version")
}
```## License
라이센스 권한 및 제한사항은 [LICENSE](LICENSE) 파일을 참조하세요 (MIT).