예제 데이터
2018-07-04T11:21:35+09:00
api에서 String의 형식으로 위와 같은 데이터를 받아와 LocalDateTime 타입의 변수에 저장해야 할 일이 생겼다.
DatetimeFormatter가 제공하는 여러가지 formatter 타입이 있다.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'+09:00'");
ofPattern안에 문자열의 형태로 넣어주면 저게 받는 데이터타입의 포맷이 된다.
문자열의 안에 알파벳을 통해 여러가지를 정의 할 수 있다.
- G 연대 (BC, AD)
- y/Y 년도
- M/L 월 (1~12 또는 1월~12월)
- Q/q 분기(quarter)
- w 년의 몇 번째 주 (1~53)
- W 월의 몇 번째 주 (1~5)
- D 년의 몇 번째 일 (1~366)
- d 월의 몇 번째 일 (1~31)
- F 월의 몇 번째 요일 (1~5)
- E/e 요일
- a 오전/오후 (AM/PM)
- H 시간 (0~23)
- h 시간 (1~12)
- k 시간 (1~24)
- K 시간 (0~11)
- m 분 (0~59)
- s 초 (0~59)
- S 1/1000초 (0~999)
- A 1/1000초 (그 날의 0시 0분 0초 부터의 시간)
- n 나노초 (0~999999999)
- N 나노초 (그 날의 0시 0분 0초 부터의 시간)
- V 시간대 ID(VV)
- z 시간대(Time zone) 이름
- O 지역화된 zone-offset
- Z zone-offset
- X/x zone-offset(Z는 +00:00를 의미)
- ’ escape 문자 (특수문자를 표현하는 데 사용)
종류는 위와 같다.
이외로 ZonedDateTime과 같은 타입도 존재한다.
그럼 위와 같이 패턴을 정의 했다면 다음은 간단하다.
LocalDateTime.parse(getOrderDate(),formatter)
LocalDateTime.parse(변환할 String, 규칙을 정한 formatter)
이런식으로 넣어주면 정상적으로 LocalDateTime 형식으로 바뀌게 된다.
참고자료