DateTimeFormatter

DateTimeFormatter (날짜·시간 출력·파싱 포매터)

날짜·시간 객체를 출력(printing)하고 파싱(parsing)하는 포매터예요. 이 클래스는 출력·파싱의 주요 애플리케이션 진입점을 제공하고, DateTimeFormatter의 일반적인 구현을 제공해요.

출처: Java API Reference

본문

DateTimeFormatter를 만드는 방법은 크게 세 가지예요.

  • ISO_LOCAL_DATE 같은 미리 정의된 상수 사용
  • uuuu-MMM-dd 같은 패턴 문자 사용
  • long이나 medium 같은 로컬라이즈된 스타일 사용

더 복잡한 포매터는 DateTimeFormatterBuilder가 제공해요.

주요 날짜·시간 클래스들은 형식화를 위한 format(DateTimeFormatter formatter)와 파싱을 위한 parse(CharSequence text, DateTimeFormatter formatter) 메서드를 제공해요. 예를 들어:

LocalDate date = LocalDate.now();
String text = date.format(formatter);
LocalDate parsedDate = LocalDate.parse(text, formatter);

포매터는 원하는 Locale, Chronology, ZoneId, DecimalStyle로 만들 수 있어요.

  • withLocale() — 로케일을 덮어쓴 새 포매터를 반환해요. 로케일은 형식화·파싱의 일부 측면에 영향을 줘요. 예를 들어 ofLocalizedDate는 로케일별 날짜 형식을 쓰는 포매터를 제공해요.
  • withChronology() — 달력 시스템을 덮어써요. 덮어쓰면 형식화 전에 날짜·시간 값이 그 달력으로 변환돼요. 파싱 중에는 값이 반환되기 전에 그 달력으로 변환돼요.
  • withZone() — 시간대를 덮어써요. 형식화 전에 값을 요청된 ZoneIdZonedDateTime으로 변환해요.
  • withDecimalStyle()DecimalStyle을 덮어써요. 심볼이 형식화·파싱에 사용돼요.

일부 애플리케이션은 형식화에 구형 java.text.Format 클래스를 써야 할 수도 있는데, toFormat() 메서드가 java.text.Format의 구현을 반환해요.

미리 정의된 포매터

포매터 설명
ofLocalizedDate(dateStyle) 로케일의 날짜 스타일 사용 '2011-12-03'
ofLocalizedTime(timeStyle) 로케일의 시간 스타일 사용 '10:15:30'
ofLocalizedDateTime(dateTimeStyle) 로케일의 날짜·시간 스타일 사용 '3 Jun 2008 11:05:30'
ofLocalizedDateTime(dateStyle, timeStyle) 로케일의 날짜·시간 스타일 사용 '3 Jun 2008 11:05'
BASIC_ISO_DATE 기본 ISO 날짜 '20111203'
ISO_LOCAL_DATE ISO 로컬 날짜 '2011-12-03'
ISO_OFFSET_DATE 오프셋 있는 ISO 날짜 '2011-12-03+01:00'
ISO_DATE 오프셋 있거나 없는 ISO 날짜 '2011-12-03+01:00'; '2011-12-03'
ISO_LOCAL_TIME 오프셋 없는 시간 '10:15:30'
ISO_OFFSET_TIME 오프셋 있는 시간 '10:15:30+01:00'

패턴 기반 형식화

ofPattern(String pattern)으로 패턴 문자열에서 포매터를 만들 수 있어요. 예를 들어 DateTimeFormatter.ofPattern("EEE, MMM d, ''yy") 같은 형태예요. 패턴 문자는 yyyy(년), MM(월), dd(일), HH(시), mm(분), ss(초) 등 DateTimeFormatterBuilder의 패턴 목록에 정의돼 있어요.

더 알아보기 (Learn more)

Java 공식 API