티스토리 뷰
728x90
문자열로 온 text 값을 LocalDateTime으로 parsing 해야 할 작업이 생겼다.
그런데 형식도 보통 yyyyMMddhhmmss 형식이 아니라 밀리세컨드까지 포함된 형식에 yyyy도 아닌 뒤에 yy만 들어오는 형태였다.
Date: 120220 (20/2/2012)
Time: 6150525 (6:15:05.250)
이렇게 들어온다..
첫번째로 yyyy가 아닌 yy부터 날짜까지만 파싱이 되는지 확인해봤다.
LocalDateTime yyMMddhhmmss = LocalDateTime.parse("220811165340", DateTimeFormatter.ofPattern("yyMMddHmmss"));
System.out.println("yyMMddhhmmss = " + yyMMddhhmmss);
//결과: yyMMddhhmmss = 2022-08-11T16:53:40
이건 잘 나온다. 다행이다.
다음에 밀리세컨드까지 넣어서 파싱 하려고 했다.
LocalDateTime yyMMddhhmmssSS = LocalDateTime.parse("22081116534060", DateTimeFormatter.ofPattern("yyMMddHmmssSS"));
System.out.println("yyMMddhhmmssSS = " + yyMMddhhmmssSS);
// Error!
밀리 세컨드까지 파싱하려면 yyMMddhhmmss 뒤에 S를 붙이면 된다고해서 붙였는데 오류..
java.time.format.DateTimeParseException: Text '22081116534060' could not be parsed at index 14
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.LocalDateTime.parse(LocalDateTime.java:492)
....
막 찾아보다가 Java8의 오류라는 걸 찾아내었다. Java8에서 DateTimeFormatter의 yyyyMMddHHmmssSSS의 오류가 있어서 아래와 같은 DateTimeFormatter를 새로 만들어서 그걸로 포매터를 적용해야 한다고 한다.
DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
.appendPattern("yyMMddHmmss")
.appendValue(ChronoField.MILLI_OF_SECOND, 3)
.toFormatter();
실제로 적용을 해봤다.
(아 그런데 내 상황의 경우 밀리세컨드가 SSS로 안들어오고 SS로 들어오는데..일단 이건 패스.. 테스트는 0을 하나 더 붙였다.)
DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
.appendPattern("yyMMddHmmss")
.appendValue(ChronoField.MILLI_OF_SECOND, 3)
.toFormatter();
LocalDateTime yyMMddHmmssSSS = LocalDateTime.parse("220811165340600", dateTimeFormatter);
System.out.println("yyMMddHmmssSSS = " + yyMMddHmmssSSS);
//결과: yyMMddHmmssSSS = 2022-08-11T16:53:40.600
된다. 그런데 가장 쉬운 다른 해결 방법으로는 그냥 java11로 올리면 된다.
(java 11로 올리면 yyMMddHmmssSS 의 형식도 알아서 잘 된다.)
시간이 좀 있으니 서버의 자바 버전을 11로 올려야겠다..!
참고
https://jaimemin.tistory.com/1540
728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 북리뷰
- mybatis config
- mybatis
- Spring
- LocalDate
- LocalDateTime
- intellij
- Github Status
- input
- Bash tab
- svn
- config-location
- jQuery
- rocky
- window
- localtime
- 오라클
- Linux
- Kotlin
- oracle
- Spring Security
- JavaScript
- springboot
- docker
- k8s
- elasticsearch
- maven
- Java
- Mac
- 베리 심플
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함