Skip to content

Commit 9ea5a80

Browse files
committed
feat: java.time 기본 패턴을 외부에서 지정할 수 있도록 변경
1 parent 50b88fa commit 9ea5a80

File tree

4 files changed

+51
-43
lines changed

4 files changed

+51
-43
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ plugins {
1212

1313
project.description = "Kotlin을 위한 java.time.* 확장 함수 라이브러리"
1414
project.group = "io.github.harryjhin"
15-
project.version = "0.13.6"
15+
project.version = "0.13.7"
1616

1717
repositories {
1818
mavenCentral()

src/main/kotlin/io/github/harryjhin/java/time/extension/DateTimeFormatterExtensions.kt

Lines changed: 25 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,20 @@
11
package io.github.harryjhin.java.time.extension
22

3+
import io.github.harryjhin.java.time.extension.JavaTimeExtensionConfiguration.PATTERN_MONTH
4+
import io.github.harryjhin.java.time.extension.JavaTimeExtensionConfiguration.PATTERN_MONTH_DAY
5+
import io.github.harryjhin.java.time.extension.JavaTimeExtensionConfiguration.PATTERN_OFFSET_DATE_TIME
6+
import io.github.harryjhin.java.time.extension.JavaTimeExtensionConfiguration.PATTERN_OFFSET_TIME
37
import java.time.format.DateTimeFormatter
48

5-
/**
6-
* [java.time.Year] 기본 패턴 `yyyy`를 나타냅니다.
7-
*/
8-
internal const val PATTERN_YEAR: String = "yyyy"
9-
10-
/**
11-
* [java.time.YearMonth] 기본 패턴 `yyyy-MM`을 나타냅니다.
12-
*/
13-
internal const val PATTERN_YEAR_MONTH: String = "yyyy-MM"
14-
15-
/**
16-
* [java.time.Month] 기본 패턴 `MM`을 나타냅니다.
17-
*/
18-
internal const val PATTERN_MONTH: String = "MM"
19-
20-
/**
21-
* [java.time.MonthDay] 기본 패턴 `MM-dd`을 나타냅니다.
22-
*/
23-
internal const val PATTERN_MONTH_DAY: String = "MM-dd"
24-
25-
/**
26-
* [java.time.LocalDate] 기본 패턴 `yyyy-MM-dd`을 나타냅니다.
27-
*/
28-
internal const val PATTERN_DATE: String = "yyyy-MM-dd"
29-
30-
/**
31-
* [java.time.LocalDateTime] 기본 패턴 `yyyy-MM-dd'T'HH:mm:ss`을 나타냅니다.
32-
*/
33-
internal const val PATTERN_DATE_TIME: String = "yyyy-MM-dd'T'HH:mm:ss"
34-
35-
/**
36-
* [java.time.LocalTime] 기본 패턴 `HH:mm:ss`을 나타냅니다.
37-
*/
38-
internal const val PATTERN_TIME: String = "HH:mm:ss"
39-
40-
internal const val PATTERN_OFFSET_DATE_TIME: String = "yyyy-MM-dd'T'HH:mm:ssXXX"
9+
internal val PATTERN_MONTH: String = JavaTimeExtensionConfiguration.PATTERN_MONTH
10+
internal val PATTERN_MONTH_DAY: String = JavaTimeExtensionConfiguration.PATTERN_MONTH_DAY
11+
internal val PATTERN_LOCAL_DATE: String = JavaTimeExtensionConfiguration.PATTERN_LOCAL_DATE
12+
internal val PATTERN_LOCAL_DATE_TIME: String = JavaTimeExtensionConfiguration.PATTERN_LOCAL_DATE_TIME
13+
internal val PATTERN_LOCAL_TIME: String = JavaTimeExtensionConfiguration.PATTERN_LOCAL_TIME
14+
internal val PATTERN_OFFSET_DATE_TIME: String = JavaTimeExtensionConfiguration.PATTERN_OFFSET_DATE_TIME
15+
internal val PATTERN_OFFSET_TIME: String = JavaTimeExtensionConfiguration.PATTERN_OFFSET_TIME
16+
internal val PATTERN_YEAR: String = JavaTimeExtensionConfiguration.PATTERN_YEAR
17+
internal val PATTERN_YEAR_MONTH: String = JavaTimeExtensionConfiguration.PATTERN_YEAR_MONTH
4118

4219
/**
4320
* [java.time.Year] 기본 포맷터 [DateTimeFormatter]입니다.
@@ -81,7 +58,7 @@ internal val FORMATTER_MONTH_DAY: DateTimeFormatter by lazy {
8158
* 패턴: `yyyy-MM-dd`
8259
*/
8360
internal val FORMATTER_DATE: DateTimeFormatter by lazy {
84-
DateTimeFormatter.ofPattern(PATTERN_DATE)
61+
DateTimeFormatter.ofPattern(PATTERN_LOCAL_DATE)
8562
}
8663

8764
/**
@@ -90,7 +67,7 @@ internal val FORMATTER_DATE: DateTimeFormatter by lazy {
9067
* 패턴: `yyyy-MM-dd'T'HH:mm:ss`
9168
*/
9269
internal val FORMATTER_DATE_TIME: DateTimeFormatter by lazy {
93-
DateTimeFormatter.ofPattern(PATTERN_DATE_TIME)
70+
DateTimeFormatter.ofPattern(PATTERN_LOCAL_DATE_TIME)
9471
}
9572

9673
/**
@@ -99,7 +76,16 @@ internal val FORMATTER_DATE_TIME: DateTimeFormatter by lazy {
9976
* 패턴: `HH:mm:ss`
10077
*/
10178
internal val FORMATTER_TIME: DateTimeFormatter by lazy {
102-
DateTimeFormatter.ofPattern(PATTERN_TIME)
79+
DateTimeFormatter.ofPattern(PATTERN_LOCAL_TIME)
80+
}
81+
82+
/**
83+
* [java.time.OffsetTime] 기본 포맷터 [DateTimeFormatter]입니다.
84+
*
85+
* 패턴: `HH:mm:ssXXX`
86+
*/
87+
internal val FORMATTER_OFFSET_TIME: DateTimeFormatter by lazy {
88+
DateTimeFormatter.ofPattern(PATTERN_OFFSET_TIME)
10389
}
10490

10591
/**
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.github.harryjhin.java.time.extension
2+
3+
import java.util.Properties
4+
5+
internal object JavaTimeExtensionConfiguration {
6+
7+
private val properties: Properties = Properties().apply {
8+
JavaTimeExtensionConfiguration::class.java.getResourceAsStream("/java-time-extensions.properties")?.run {
9+
load(this)
10+
}
11+
}
12+
13+
val PATTERN_YEAR: String = properties.getProperty("pattern.year") ?: "yyyy"
14+
val PATTERN_MONTH: String = properties.getProperty("pattern.month") ?: "MM"
15+
val PATTERN_YEAR_MONTH: String = properties.getProperty("pattern.year-month") ?: "yyyy-MM"
16+
val PATTERN_MONTH_DAY: String = properties.getProperty("pattern.month-day") ?: "MM-dd"
17+
val PATTERN_LOCAL_DATE: String = properties.getProperty("pattern.local-date") ?: "yyyy-MM-dd"
18+
val PATTERN_LOCAL_DATE_TIME: String = properties.getProperty("pattern.local-date-time") ?: "yyyy-MM-dd'T'HH:mm:ss"
19+
val PATTERN_LOCAL_TIME: String = properties.getProperty("pattern.local-time") ?: "HH:mm:ss"
20+
val PATTERN_OFFSET_TIME: String = properties.getProperty("pattern.offset-time") ?: "HH:mm:ssXXX"
21+
val PATTERN_OFFSET_DATE_TIME: String = properties.getProperty("pattern.offset-date-time") ?: "yyyy-MM-dd'T'HH:mm:ssXXX"
22+
}

src/main/kotlin/io/github/harryjhin/java/time/extension/StringExtensions.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,9 @@ fun String.toDateTimeFormatter(): DateTimeFormatter {
160160
PATTERN_YEAR_MONTH -> FORMATTER_YEAR_MONTH
161161
PATTERN_MONTH -> FORMATTER_MONTH
162162
PATTERN_MONTH_DAY -> FORMATTER_MONTH_DAY
163-
PATTERN_DATE -> FORMATTER_DATE
164-
PATTERN_DATE_TIME -> FORMATTER_DATE_TIME
165-
PATTERN_TIME -> FORMATTER_TIME
163+
PATTERN_LOCAL_DATE -> FORMATTER_DATE
164+
PATTERN_LOCAL_DATE_TIME -> FORMATTER_DATE_TIME
165+
PATTERN_LOCAL_TIME -> FORMATTER_TIME
166166
PATTERN_OFFSET_DATE_TIME -> FORMATTER_OFFSET_DATE_TIME
167167
else -> DateTimeFormatter.ofPattern(this)
168168
}

0 commit comments

Comments
 (0)