LocalDateTime DateTimeParseException

Jang990·2023년 3월 27일
1
post-custom-banner

오류 상황

2022-12-02라는 문자열 데이터를 LocalDateTime으로 변경하는 과정에서 오류가 발생했다.

LocalDateTime은 날짜와 시간을 같이 저장하는데 시간값이 세팅되지 않기 때문에 발생한 오류이다.

해결 1 - LocalDateTime 대신 LocalDate 사용하기

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate dt = LocalDate.parse("20140218", formatter);

해결 2 - LocalDateTime에 Time만 00으로 세팅하기

2022-12-02라는 값을 넣으면 자동으로 Time부분은 00으로 세팅하고 싶다면 다음 코드를 사용하자.

final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDateTime time = LocalDate.parse("20140218", formatter).atStartOfDay();

// 2022-12-02T00:00 이런 식으로 저장된다.

내가 사용한 코드

나는 시간이 없는 경우와 시간이 있는 경우 모두 처리해야 하기 때문에 다음과 같은 코드를 사용했다.

public static LocalDateTime parseDate(String dateString) {
        DateTimeFormatter format
        if(dateString.contains(":")) {
        	// 2022-10-31 21:00 이라는 문자열은 여기 걸립니다.
            format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
            return LocalDateTime.parse(dateString, format);
        }
        
		// 2022-12-02 라는 문자열은 여기 걸립니다.
        format = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return LocalDate.parse(dateString, format).atStartOfDay();
    }

출처

https://stackoverflow.com/questions/27454025/unable-to-obtain-localdatetime-from-temporalaccessor-when-parsing-localdatetime

profile
공부한 내용을 적지 말고 이해한 내용을 설명하자
post-custom-banner

0개의 댓글