generated from pricelees/issue-pr-template
feat: 한국 시간(KST)을 가져오는 유틸 클래스 및 테스트 추가
This commit is contained in:
parent
d47e4dfce7
commit
6c2e63e35e
@ -0,0 +1,20 @@
|
||||
package com.sangdol.common.utils
|
||||
|
||||
import java.time.*
|
||||
import java.time.temporal.ChronoUnit
|
||||
|
||||
private val KST_CLOCK = Clock.system(ZoneId.of("Asia/Seoul"))
|
||||
|
||||
object KoreaDate {
|
||||
fun today(): LocalDate = LocalDate.now(KST_CLOCK)
|
||||
}
|
||||
|
||||
object KoreaTime {
|
||||
fun now(): LocalTime = LocalTime.now(KST_CLOCK).truncatedTo(ChronoUnit.MINUTES)
|
||||
}
|
||||
|
||||
object KoreaDateTime {
|
||||
fun now(): LocalDateTime = LocalDateTime.now(KST_CLOCK)
|
||||
}
|
||||
|
||||
fun Instant.toKoreaDateTime(): LocalDateTime = this.atZone(KST_CLOCK.zone).toLocalDateTime()
|
||||
@ -0,0 +1,39 @@
|
||||
package com.sangdol.common.utils
|
||||
|
||||
import io.kotest.assertions.assertSoftly
|
||||
import io.kotest.core.spec.style.FunSpec
|
||||
import io.kotest.matchers.shouldBe
|
||||
import java.time.Instant
|
||||
import java.time.LocalDateTime
|
||||
import java.time.LocalTime
|
||||
import java.time.ZoneId
|
||||
|
||||
class KoreaDateTimeExtensions : FunSpec({
|
||||
|
||||
test("한국 시간 기준으로 현재 시간을 가져오며, 초 단위는 제외한다.") {
|
||||
assertSoftly(KoreaTime.now()) {
|
||||
val utcNow = LocalTime.now(ZoneId.of("UTC"))
|
||||
|
||||
this.hour shouldBe utcNow.hour.plus(9)
|
||||
this.minute shouldBe utcNow.minute
|
||||
this.second shouldBe 0
|
||||
this.nano shouldBe 0
|
||||
}
|
||||
}
|
||||
|
||||
test("한국 시간 기준으로 현재 날짜 + 시간을 가져온다.") {
|
||||
assertSoftly(KoreaDateTime.now()) {
|
||||
val utcNow = LocalDateTime.now(ZoneId.of("UTC"))
|
||||
|
||||
this.withSecond(0).withNano(0) shouldBe utcNow.plusHours(9).withSecond(0).withNano(0)
|
||||
}
|
||||
}
|
||||
|
||||
test("UTC 시간을 한국 시간으로 변환한다.") {
|
||||
val now = Instant.now()
|
||||
val kstConverted = now.toKoreaDateTime()
|
||||
val utc = now.atZone(ZoneId.of("UTC")).toLocalDateTime()
|
||||
|
||||
kstConverted.withSecond(0).withNano(0) shouldBe utc.plusHours(9).withSecond(0).withNano(0)
|
||||
}
|
||||
})
|
||||
Loading…
x
Reference in New Issue
Block a user