[kotlin] 코틀린에서의 날짜 타입 변환 함수

코틀린에서는 java.time 패키지를 사용하여 날짜와 시간을 다룰 수 있습니다. 이 패키지에는 다양한 날짜 타입과 관련된 클래스와 함수가 포함되어 있습니다. 이번 블로그에서는 코틀린에서 자주 사용되는 날짜 타입 변환 함수들을 알아보겠습니다.

1. LocalDate <-> String

LocalDate 타입은 날짜를 표현하는 클래스입니다. 이를 문자열로 변환하기 위해서는 DateTimeFormatter를 사용해야 합니다. 다음은 LocalDate 타입을 문자열로 변환하는 예시 코드입니다.

import java.time.LocalDate
import java.time.format.DateTimeFormatter

fun dateToString(date: LocalDate): String {
    val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
    return date.format(formatter)
}

ofPattern 메서드를 사용하여 원하는 포맷을 지정할 수 있습니다. 위 코드에서는 yyyy-MM-dd 형식으로 변환하였습니다.

문자열을 LocalDate 타입으로 변환하기 위해서는 parse 메서드를 사용해야 합니다. 다음은 문자열을 LocalDate 타입으로 변환하는 예시 코드입니다.

import java.time.LocalDate
import java.time.format.DateTimeFormatter

fun stringToDate(dateString: String): LocalDate {
    val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
    return LocalDate.parse(dateString, formatter)
}

2. LocalDateTime <-> String

LocalDateTime 타입은 날짜와 시간을 함께 표현하는 클래스입니다. DateTimeFormatter를 사용하여 LocalDateTime 타입을 문자열로 변환하고, 문자열을 LocalDateTime 타입으로 변환할 수 있습니다. 예시 코드는 다음과 같습니다.

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

fun dateTimeToString(dateTime: LocalDateTime): String {
    val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
    return dateTime.format(formatter)
}

fun stringToDateTime(dateTimeString: String): LocalDateTime {
    val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
    return LocalDateTime.parse(dateTimeString, formatter)
}

3. Instant <-> String

Instant 타입은 UTC 기준으로 표현된 시간을 저장하는 클래스입니다. Instant 타입도 DateTimeFormatter를 사용하여 문자열로 변환하고, 문자열을 Instant 타입으로 변환할 수 있습니다. 예시 코드는 다음과 같습니다.

import java.time.Instant
import java.time.format.DateTimeFormatter

fun instantToString(instant: Instant): String {
    val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
    return formatter.format(instant)
}

fun stringToInstant(instantString: String): Instant {
    val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
    return formatter.parse(instantString, Instant::from)
}

결론

코틀린에서 java.time 패키지를 사용하여 다양한 날짜 타입을 다룰 수 있습니다. LocalDate, LocalDateTime, Instant 타입을 문자열로 변환하거나, 문자열을 해당 타입으로 변환하기 위해서는 DateTimeFormatter를 사용해야 합니다. 앞서 소개한 함수들을 활용하여 날짜 타입을 변환하는 작업을 쉽게 할 수 있습니다.

참고: Java 8 날짜 및 시간 API (java.time 패키지)