Skip to content

LocalTime

주진현 edited this page Aug 28, 2024 · 2 revisions

java.time.LocalTime 클래스는 시간을 표현하는 불변 클래스입니다.

이 페이지에서는 java-time-extensions 라이브러리에서 어떻게 확장 프로퍼티, 확장 함수, 중위 함수를 사용할 수 있는지 설명합니다.

1 instance 생성

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

1.1 String.toLocalTime(): LocalTime

StringLocalTime으로 변환하려면 toLocalTime() 확장 함수를 사용하십시오.

import io.github.harryjhin.java.time.extension.toLocalTime
import java.time.LocalTime

val time: LocalTime = "12:34:56".toLocalTime()

String 값은 반드시 HH:mm:ss 형식이어야 합니다. 그렇지 않으면 DateTimeParseException이 발생합니다.

예외를 던지지 대신 null을 반환하려면 toLocalTimeOrNull() 확장 함수를 사용하십시오.

1.2 String.toLocalTimeOrNull(): LocalTime?

StringLocalTime으로 변환하면서 예외가 발생한 경우 null을 반환하려면 toLocalTimeOrNull() 확장 함수를 사용하십시오.

import io.github.harryjhin.java.time.extension.toLocalTimeOrNull
import java.time.LocalTime

val time: LocalTime? = "0123456789".toLocalTimeOrNull() // null

String 값이 HH:mm:ss 형식이 아니라면 null을 반환합니다.

null을 반환하는 대신 형식을 지정하려면 toLocalTime(String) 확장 함수를 사용하십시오.

1.3 String.toLocalTime(String): LocalTime

String을 지정한 패턴을 사용하여 LocalTime으로 변환하려면 toLocalTime(String) 확장 함수를 사용하십시오.

import io.github.harryjhin.java.time.extension.toLocalTime
import java.time.LocalTime

val time: LocalTime = "123456".toLocalTime("HHmmss")

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

예외를 던지지 대신 null을 반환하려면 toLocalTimeOrNull(String) 확장 함수를 사용하십시오.

1.4 String.toLocalTimeOrNull(String): LocalTime?

String을 지정한 패턴을 사용하여 LocalTime으로 변환하면서 예외가 발생한 경우 null을 반환하려면 toLocalTimeOrNull(String) 확장 함수를 사용하십시오.

import io.github.harryjhin.java.time.extension.toLocalTimeOrNull
import java.time.LocalTime

val time: LocalTime? = "123456".toLocalTimeOrNull("HH:mm:ss") // null

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

형식을 지정할 때 String 대신 DateTimeFormatter를 사용하려면 toLocalTime(DateTimeFormatter) 확장 함수를 사용하십시오.

1.5 String.toLocalTime(DateTimeFormatter): LocalTime

StringDateTimeFormatter를 사용하여 LocalTime으로 변환하려면 toLocalTime(DateTimeFormatter) 확장 함수를 사용하십시오.

import io.github.harryjhin.java.time.extension.toLocalTime
import java.time.LocalTime
import java.time.format.DateTimeFormatter

val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("HHmmss")
val time: LocalTime = "123456".toLocalTime(formatter)

String 값이 지정한 형식과 일치하지 않는 경우 DateTimeParseException이 발생합니다.

예외를 던지지 대신 null을 반환하려면 toLocalTimeOrNull(DateTimeFormatter) 확장 함수를 사용하십시오.

1.6 String.toLocalTimeOrNull(DateTimeFormatter): LocalTime?

StringDateTimeFormatter를 사용하여 LocalTime으로 변환하면서 예외가 발생한 경우 null을 반환하려면 toLocalTimeOrNull(DateTimeFormatter) 확장 함수를 사용하십시오.

import io.github.harryjhin.java.time.extension.toLocalTimeOrNull
import java.time.LocalTime
import java.time.format.DateTimeFormatter

val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss")
val time: LocalTime? = "123456".toLocalTimeOrNull(formatter) // null

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

2 LocalTime to TemporalAmount

LocalTime 인스턴스는 시간 정보만 가지고 있습니다. 따라서 시간은 Duration으로 변환할 수 있습니다.

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

2.1 LocalTime.hours: Duration

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

import io.github.harryjhin.java.time.extension.hours
import java.time.Duration
import java.time.LocalTime

val time: LocalTime = LocalTime.of(12, 34, 56, 123_456_789)
val hours: Duration = time.hours // PT12H

2.2 LocalTime.minutes: Duration

LocalTime 인스턴스에서 분 값을 가져오려면 minutes 확장 프로퍼티를 사용하십시오.

import io.github.harryjhin.java.time.extension.minutes
import java.time.Duration
import java.time.LocalTime

val time: LocalTime = LocalTime.of(12, 34, 56, 123_456_789)
val minutes: Duration = time.minutes // PT34M

2.3 LocalTime.seconds: Duration

LocalTime 인스턴스에서 초 값을 가져오려면 seconds 확장 프로퍼티를 사용하십시오.

import io.github.harryjhin.java.time.extension.seconds
import java.time.Duration
import java.time.LocalTime

val time: LocalTime = LocalTime.of(12, 34, 56, 123_456_789)
val seconds: Duration = time.seconds // PT56S

2.4 LocalTime.milliseconds: Duration

LocalTime 인스턴스에서 나노초 값을 밀리초 단위까지 가져오려면 milliseconds 확장 프로퍼티를 사용하십시오.

import io.github.harryjhin.java.time.extension.milliseconds
import java.time.Duration
import java.time.LocalTime

val time: LocalTime = LocalTime.of(12, 34, 56, 123_456_789)
val milliseconds: Duration = time.milliseconds // PT0.123S

2.5 LocalTime.microseconds: Duration

LocalTime 인스턴스에서 나노초 값을 마이크로초 단위까지 가져오려면 microseconds 확장 프로퍼티를 사용하십시오.

import io.github.harryjhin.java.time.extension.microseconds
import java.time.Duration
import java.time.LocalTime

val time: LocalTime = LocalTime.of(12, 34, 56, 123_456_789)
val microseconds: Duration = time.microseconds // PT0.123456S

2.6 LocalTime.nanoseconds: Duration

LocalTime 인스턴스에서 나노초 값을 가져오려면 nanoseconds 확장 프로퍼티를 사용하십시오.

import io.github.harryjhin.java.time.extension.nanoseconds
import java.time.Duration
import java.time.LocalTime

val time: LocalTime = LocalTime.of(12, 34, 56, 123_456_789)
val nanoseconds: Duration = time.nanoseconds // PT0.123456789S

3 연산

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

위 연산을 수행하기 위해 TemporalAmount 인스턴스가 필요하며, LocalTime 인스턴스를 Duration으로 변환할 수 있습니다.

3.1 LocalTime.plus(TemporalAmount): LocalTime

LocalTime 인스턴스에 Duration을 더하려면 plus(+) 연산자를 사용하십시오.

import io.github.harryjhin.java.time.extension.toLocalTime
import io.github.harryjhin.java.time.extension.hours
import io.github.harryjhin.java.time.extension.minutes
import io.github.harryjhin.java.time.extension.seconds
import java.time.LocalTime

val time: LocalTime = "12:34:56".toLocalTime()
val result: LocalTime = time + 1.hours + 2.minutes + 3.seconds // 13:36:59

3.2 LocalTime.minus(TemporalAmount): LocalTime

LocalTime 인스턴스에서 Duration을 빼려면 minus(-) 연산자를 사용하십시오.

import io.github.harryjhin.java.time.extension.hours
import io.github.harryjhin.java.time.extension.minutes
import io.github.harryjhin.java.time.extension.seconds
import java.time.LocalTime

val time: LocalTime = "12:34:56".toLocalTime()
val result: LocalTime = time - 1.hours - 2.minutes - 3.seconds // 11:32:53

4. 중위 연산자

LocalTime 인스턴스를 다른 java.time 클래스로 변환하려면 다음 중위 함수를 사용하십시오:

4.1 LocalTime.at(LocalDate): LocalDateTime

LocalTimeLocalDate를 결합하여 LocalDateTime으로 변환하려면 at 중위 함수를 사용하십시오.

import io.github.harryjhin.java.time.extension.at
import io.github.harryjhin.java.time.extension.toLocalDate
import io.github.harryjhin.java.time.extension.toLocalTime
import java.time.LocalDate
import java.time.LocalTime
import java.time.LocalDateTime

val date: LocalDate = "2024-01-01".toLocalDate()
val time: LocalTime = "12:34:56".toLocalTime()

val dateTime: LocalDateTime = time at date // 2024-01-01T12:34:56

4.2 LocalTime.between(LocalTime): Duration

LocalTime 인스턴스 사이의 시간 차이를 계산하려면 between 중위 함수를 사용하십시오.

import io.github.harryjhin.java.time.extension.between
import io.github.harryjhin.java.time.extension.toLocalTime
import java.time.LocalTime
import java.time.Duration

val startTIme: LocalTime = "12:34:56".toLocalTime()
val endTime: LocalTime = "13:35:57".toLocalTime()

val duration: Duration = endTime between startTime // PT1H1M1S

5. LocalTime to String

LocalTime 인스턴스를 String으로 변환하려면 다음 확장 함수를 사용하십시오:

5.1 LocalTime.toString(String): String

LocalTime 인스턴스를 지정한 패턴을 사용하여 String으로 변환하려면 toString(String) 확장 함수를 사용하십시오.

import io.github.harryjhin.java.time.extension.toString
import java.time.LocalTime

val time: LocalTime = LocalTime.of(12, 34, 56)
val result: String = time.toString("HHmmss") // 123456

5.2 LocalTime.toString(DateTimeFormatter): String

LocalTime 인스턴스를 DateTimeFormatter를 사용하여 String으로 변환하려면 toString(DateTimeFormatter) 확장 함수를 사용하십시오.

import io.github.harryjhin.java.time.extension.toString
import java.time.LocalTime
import java.time.format.DateTimeFormatter

val time: LocalTime = LocalTime.of(12, 34, 56)
val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("HHmmss")
val result: String = time.toString(formatter) // 123456
Clone this wiki locally