Java.Text.ParseException 수정: Java에서 구문 분석할 수 없는 날짜 오류

Sheeraz Gul 2023년10월12일
Java.Text.ParseException 수정: Java에서 구문 분석할 수 없는 날짜 오류

이 튜토리얼은 Java의 java.text.ParseException: Unparseable date 오류를 보여줍니다.

Java에서 java.text.ParseException: Unparseable date 오류 수정

java.text.ParseException: Unparseable date 오류는 일반적으로 Java에서 SimpleDateFormat 클래스를 사용하는 동안 발생합니다. 이 클래스는 Java에서 날짜 형식을 지정하는 데 사용됩니다.

대부분의 경우 java.text.ParseException: Unparseable date 오류는 문자열 날짜를 원하는 다른 날짜 형식으로 변환하려고 할 때 발생합니다. 이 오류를 일으키는 날짜 문자열에는 주로 세 가지 문제가 있습니다.

잘못된 날짜 형식을 사용하는 경우

날짜 형식은 날짜를 원하는 형식으로 구문 분석하는 동안 매우 중요합니다. 날짜는 Java에서 대소문자를 구분하므로 모든 요소의 대소문자가 정확해야 합니다.

아래 표는 날짜의 각 요소에 대한 올바른 구문을 보여줍니다.

이름 통사론
Day dd
Month MM
Year yyyy
Hour HH
Minute mm
Second ss

위의 표에 따르면 Java의 올바른 날짜 형식은 다음과 같습니다.

SimpleDateFormat DemoDateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");

잘못된 현지화를 사용하는 경우

현지화는 Java에서 날짜를 작성할 때 또 다른 중요한 요소입니다. 영어 로케일에 날짜를 입력하고 영어가 아닌 다른 시스템에서 구문 분석을 시도하면 java.text.ParseException: Unparseable date 오류가 발생합니다.

다른 시스템에서 데이터를 구문 분석하는 데 문제가 없도록 날짜 형식으로 로케일을 지정해야 합니다. 지정하지 않으면 JVM이 기본 로케일을 사용하기 때문입니다.

다음은 로케일 구문의 예입니다.

SimpleDateFormat DemoDateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss", Locale.English);

잘못된 시간대를 사용하는 경우

Java로 날짜 형식을 작성하는 동안 올바른 시간대를 사용하는 것도 중요합니다. SimpleDateFormat 클래스는 형식에 지정되지 않은 경우 기본 시간대인 JVM의 현재 시간대를 사용하도록 프로그래밍됩니다.

JVM 시간대는 사용자의 위치에 따라 변경될 수 있으므로 이 경우 시간대를 설정하지 않으면 형식이 잘못되거나 예기치 않은 오류가 발생합니다.

다음은 Java에서 시간대를 설정하는 구문입니다.

DemoDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

Java에서 java.text.ParseException: Unparseable date 오류를 발생시키는 예제를 살펴보겠습니다.

package delftstack;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Example {
  public static void main(String[] arg) throws ParseException {
    String DemoDate = "Tue Aug 16 12:30:10 IST 2022";
    SimpleDateFormat Simple_Date_Format = new SimpleDateFormat("MMM d, yyyy HH:mm:ss");
    Date Current_Date;
    Current_Date = Simple_Date_Format.parse(DemoDate);
    System.out.println(Current_Date);
  }
}

위 코드의 날짜 패턴은 입력 문자열과 일치하지 않으므로 다음 오류가 발생합니다.

Exception in thread "main" java.text.ParseException: Unparseable date: "Tue Aug 16 12:30:10 IST 2022"
    at java.base/java.text.DateFormat.parse(DateFormat.java:399)
    at delftstack.Example.main(Example.java:13)

주어진 문자열에 따라 날짜의 올바른 형식을 가진 솔루션은 다음과 같습니다.

package delftstack;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Example {
  public static void main(String[] arg) throws ParseException {
    String DemoDate = "Tue Aug 16 12:30:10 IST 2022";
    SimpleDateFormat Simple_Date_Format =
        new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
    Date Current_Date;
    Current_Date = Simple_Date_Format.parse(DemoDate);
    System.out.println(Current_Date);
  }
}

코드의 출력은 다음과 같습니다.

Tue Aug 16 15:30:10 PKT 2022

주어진 출력이 좋지 않은 경우 다른 SimpleDateFormat을 추가하고 선택에 따라 Current_Date 형식을 지정할 수 있습니다. 예를 참조하십시오:

package delftstack;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Example {
  public static void main(String[] arg) throws ParseException {
    String DemoDate = "Tue Aug 16 12:30:10 IST 2022";
    SimpleDateFormat Simple_Date_Format =
        new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
    Date Current_Date;
    Current_Date = Simple_Date_Format.parse(DemoDate);

    SimpleDateFormat Print_Date = new SimpleDateFormat("EE MMM d, yyyy HH:mm:ss");
    System.out.println(Print_Date.format(Current_Date));
  }
}

위의 코드는 더 읽기 쉬운 형식으로 날짜를 인쇄합니다. 출력 참조:

Tue Aug 16, 2022 15:30:10
작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

관련 문장 - Java Error