Kotlin - String을 파싱하여 LocalDate로 변환하는 방법

LocalDate와 DateTimeFormatter 라이브러리를 이용하면 문자로 된 날짜를 Date 객체로 변환할 수 있습니다. 스트링을 Date객체로 변환하면 날짜 계산 등 데이터를 처리하는데 편리합니다.

날짜 파싱하여 LocalDate 객체 생성

LocalDate.parse를 이용하면 문자를 파싱하여 LocalDate 객체를 생성할 수 있습니다.

아래 코드에서 DateTimeFormatter.ISO_DATE는 "yyyy-mm-dd"를 상수로 선언한 것입니다. 이 옵션을 사용하면 "yyyy-mm-dd" 형태의 스트링을 파싱할 수 있습니다.

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

fun main(args: Array<String>) {
    val string = "2019-01-10"
    val date = LocalDate.parse(string, DateTimeFormatter.ISO_DATE)
    println(date)
}

출력

2019-01-10

Format을 정의하여 날짜 파싱

날짜가 "2019년 01월 10일"같이 형식이 일반적이지 않은 경우, 패턴을 만들어 파싱하는데 사용할 수 있습니다.

아래 코드는 "yyyy년 MM월 dd일"패턴을 생성하여 문자를 파싱하는 예제입니다. LocalDate.format API를 사용하면 fommater 형태로 문자를 출력해줍니다.

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

fun main(args: Array<String>) {
    val string = "2019년 01월 10일"
    val formatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일")
    val date: LocalDate = LocalDate.parse(string, formatter)

    println(date)
    println(date.format(formatter))
}

출력

2019-01-10
20190110

DateTimeFormatter에서 다음과 같은 패턴들을 사용할 수 있습니다.

패턴 예제
yyyy-MM-dd “2019-07-04”
dd-MMM-yyyy “04-July-2019”
dd/MM/yyyy “04/07/2019”
yyyy-MM-dd'T'HH:mm:ssZ “2019-07-04T12:30:30+0530”
h:mm a “12:00 PM”
yyyy년 MM월 dd일 "2019년 01월 10일"

정리

문자를 LocalData 객체로 변환하는 방법에 대해서 알아보았습니다. 일반적인 날짜는 상수로 정의되어있는 것을 사용하면 되고, 그렇지 않다면 Fomatter를 만들어서 파싱하면 됩니다.

Loading script...
codechachaCopyright ©2019 codechacha