년월 데이터를 처리하기 위해 LocalDate를 사용하고 있던중, 문자열을 LocalDate로 변환할 일이 있어 별 생각 없이 LocalDate.parse(문자열, DateTimeFormatter)함수를 사용했다.
String yearMonthString = "202210";
LocalDate yearMonth = LocalDate.parse(yearMonthString, DateTimeFormatter.ofPattern("yyyyMM"));
결과...
java.time.format.DateTimeParseException: Text '202210' could not be parsed: Unable to obtain LocalDate from TemporalAccessor: {Year=2022, MonthOfYear=10},ISO of type java.time.format.Parsed
at java.base/java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:2023)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1958)
at java.base/java.time.LocalDate.parse(LocalDate.java:430)
at jhproject.datascraper.population.scraper.PopulationScrapYearMonth.of(PopulationScrapYearMonth.java:21)
at jhproject.datascraper.population.scraper.PopulationScrapParameter.next(PopulationScrapParameter.java:48)
at jhproject.datascraper.population.scraper.PopulationScrapParameterTest.whenLastLvAndLastRegSeCd_returnNextMonthFirstLvFirstRegSeCd(PopulationScrapParameterTest.java:233)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
...
Caused by: java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: {Year=2022, MonthOfYear=10},ISO of type java.time.format.Parsed
at java.base/java.time.LocalDate.from(LocalDate.java:398)
at java.base/java.time.format.Parsed.query(Parsed.java:241)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1954)
... 74 more
원인은, LocalDate를 생성하려면 년, 월, 일 데이터가 필수 데이터 인데 매개변수의 문자열에는 일(day) 데이터가 없기 때문에 발생한 문제이다.
따라서, 간단히 아래처럼 일 데이터를 고정하는 방법으로 수정해서 해결했음
String yearMonthString = "202210";
LocalDate yearMonth = LocalDate.parse(yearMonthString + "01", DateTimeFormatter.ofPattern("yyyyMMdd"));
반응형
'Java' 카테고리의 다른 글
JAVA - for 문으로 map의 key, value를 탐색하는 방법 (EntrySet 이용) (0) | 2024.01.11 |
---|---|
JUnit5 테스트 순서 지정하기 (0) | 2023.12.02 |
Java - Json(ObjectMapper) 배열(Collection) 타입이지만, 데이터가 1개인 경우 Object로 작성되는 배열 필드 처리하기 (0) | 2023.11.17 |
(spring boot 3.1 이상) 간단한 설정(@ServiceConnection)으로 testcontainer 사용하기 (0) | 2023.10.16 |
Java - Srping 시작할 때 동작하는 코드 작성하는 법 (0) | 2023.09.23 |