Skip to content

DateTimeFormatter

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

java.time.DateTimeFormatter 클래스는 날짜-시간 객체를 String으로 형식화하거나 String을 날짜-시간 객체로 파싱하는 데 사용됩니다.

1 instance 생성

DateTimeFormatter 인스턴스를 생성하는 두 가지 방법이 있습니다:

1.1 String.toDateTimeFormatter(): DateTimeFormatter

주어진 StringDateTimeFormatter로 파싱합니다.

import io.github.harryjhin.java.time.extension.toDateTimeFormatter
import java.time.format.DateTimeFormatter

val formatter: DateTimeFormatter = "yyyy-MM-dd".toDateTimeFormatter()

만약 String이 해석할 수 없는 패턴이라면 IllegalArgumentException이 발생합니다.

val formatter: DateTimeFormatter = "ABC".toDateTimeFormatter() // throw IllegalArgumentException

1.2 String.toDateTimeFormatterOrNull(): DateTimeFormatter?

주어진 StringDateTimeFormatter로 파싱합니다. 만약 String이 해석할 수 없는 패턴이라면 null을 반환합니다.

import io.github.harryjhin.java.time.extension.toDateTimeFormatterOrNull
import java.time.format.DateTimeFormatter

val formatter: DateTimeFormatter? = "yyyy-MM-dd".toDateTimeFormatterOrNull()

만약 String이 해석할 수 없는 패턴이라면 null을 반환합니다.

val formatter: DateTimeFormatter? = "ABC".toDateTimeFormatterOrNull() // null

2 싱글톤

String.toDateTimeFormatter() 또는 String.toDateTimeFormatterOrNull()을 사용하여 DateTimeFormatter 인스턴스를 생성하면 몇 가지 패턴에 대해서는 동일한 인스턴스를 반환합니다.

패턴에 대한 정보는 기본 구성에서 찾을 수 있습니다. 기본 구성을 변경하지 않았다면 다음 패턴은 동일한 DateTimeFormatter 인스턴스를 반환합니다:

  • yyyy-MM-dd
  • yyyy-MM-dd['T'][ ]HH:mm[:ss][.SSS]
  • HH:mm[:ss][.SSS]
  • [--]MM-dd
  • yyyy-MM-dd['T'][ ]HH:mm[:ss][.SSS]XXX
  • HH:mm[:ss][.SSS]XXX
  • yyyy
  • yyyy-MM
  • yyyy-MM-dd['T'][ ]HH:mm[:ss][.SSS]XXX'['VV']'

만약 기본 구성 중에 없는 패턴을 사용하면 String.toDateTimeFormatter() 또는 String.toDateTimeFormatterOrNull()을 호출할 때마다 새로운 DateTimeFormatter 인스턴스가 생성됩니다.

기본 구성을 변경한 경우 변경한 패턴에 대해서는 동일한 DateTimeFormatter 인스턴스를 반환하고, 변경 전 패턴에 대해서는 새로운 DateTimeFormatter 인스턴스를 생성합니다.

Clone this wiki locally