Java에서 문자열을 LocalDate로 변환

Mohammad Irfan 2023년10월12일
  1. Java에서 parse() 메소드를 사용하여 문자열을 LocalDate로 변환
  2. Java에서 parse()ofPattern() 메서드를 사용하여 문자열을 LocalDate로 변환
  3. Java에서 월이 문자열 이름으로 포함된 문자열 날짜 변환
  4. Java에서 일과 월이 있는 문자열 날짜를 문자열 이름으로 변환
  5. Java에서 시간이 있는 문자열 날짜를 LocalDate로 변환
  6. 결론
Java에서 문자열을 LocalDate로 변환

이 튜토리얼에서는 Java 예제를 사용하여 String을 LocalDate로 변환하는 방법을 소개합니다.

LocalDate는 현지 날짜를 나타내는 데 도움이 되는 Java의 클래스입니다. 날짜가 표시되는 형식은 ‘yyyy-mm-dd’입니다.

때로는 LocalDate 클래스에서 제공하는 기능을 사용하기 위해 문자열을 LocalDate로 변환하고 싶을 수도 있습니다. 이 튜토리얼에서는 String을 LocalDate로 변환하는 다양한 방법을 볼 것입니다.

날짜는 다양한 형식으로 표시될 수 있습니다. 포맷터 인스턴스를 생성해야 합니다. DateTimeFormatter 클래스를 사용하여 포맷터를 만들 수 있습니다.

그런 다음 포맷터 인스턴스를 LocalDate.parse() 메서드에 전달합니다. 전달된 문자열을 구문 분석할 수 없는 경우 LocalDate.parse() 메서드는 DateTimeParseException을 throw합니다.

구문 분석은 String을 날짜로 변환하는 것과 동일하며 형식 지정은 Java에서 날짜를 문자열로 변환하는 것을 의미합니다.

Java에서 parse() 메소드를 사용하여 문자열을 LocalDate로 변환

날짜가 ISO 로컬 날짜 형식(yyyy-mm-dd)인 경우 형식을 설정할 필요가 없습니다. 문자열을 현지 날짜를 반환하는 parse() 메서드로 직접 구문 분석할 수 있습니다.

아래 예를 참조하십시오.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "2021-12-21";
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date);
    System.out.println(local_date);
  }
}

출력:

2021-12-21

Java에서 parse()ofPattern() 메서드를 사용하여 문자열을 LocalDate로 변환

문자열 날짜가 ISO 형식이 아닌 경우 DateTimeFormatter.ofPattern() 메서드를 사용하여 형식을 변환한 다음 형식 형식을 인수로 전달하여 parse() 메서드를 호출해야 합니다.

아래 예를 참조하십시오.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "21/12/2021";
    DateTimeFormatter JEFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

출력:

2021-12-21

Java에서 월이 문자열 이름으로 포함된 문자열 날짜 변환

문자열 날짜에 Jan, Feb, Mar 등과 같은 문자로 된 월 이름이 있는 경우 오류 없이 작동하는 MMM 인수와 함께 ofPattern() 메서드를 사용해야 합니다. 기본 로케일이 Locale.English 또는 Locale.US인 경우.

즉, 로케일은 문자열을 구문 분석하기 위해 월이 작성된 언어를 이해해야 합니다. 로케일은 특정 지리적, 정치적 또는 문화적 지역을 나타내는 개체입니다.

아래 코드를 보십시오.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "21-Dec-2021";
    DateTimeFormatter JEFormatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

출력:

2021-12-21

위의 형식은 대소문자를 구분합니다. Dec 대신 dec를 쓰면 예외가 발생합니다.

아래 예를 참조하십시오.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "21-dec-2021";
    DateTimeFormatter JEFormatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

출력:

Exception in thread "main" java.time.format.DateTimeParseException: Text '21-dec-2021' could not be parsed at index 3
    at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2052)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1954)
    at java.base/java.time.LocalDate.parse(LocalDate.java:430)
    at SimpleTesting.main(SimpleTesting.java:8)

이제 기본 로케일을 중국과 같이 영어를 이해하지 못하는 다른 국가로 변경해 보겠습니다. Locale.setDefault() 메소드를 사용하고 필요한 로케일을 인수로 전달하여 이를 수행합니다(이 경우 Locale.CHINESE).

아래 코드를 보십시오.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class SimpleTesting {
  public static void main(String args[]) {
    Locale.setDefault(Locale.CHINESE); // setting locale as chinese
    String JE_date = "21-Dec-2021";
    DateTimeFormatter JEFormatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

출력:

Exception in thread "main" java.time.format.DateTimeParseException: Text '21-Dec-2021' could not be parsed at index 3
    at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2052)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1954)
    at java.base/java.time.LocalDate.parse(LocalDate.java:430)
    at SimpleTesting.main(SimpleTesting.java:10)

위의 코드에서는 중국어 로케일이 영어를 이해하지 못하므로 월 이름을 이해할 수 없기 때문에 오류가 발생합니다. 문자열이 프랑스어인 21-mai-2021이라고 가정하고 이를 날짜로 변환하려면 ofPattern() 메소드의 인수로 Locale.FRANCE를 전달해야 합니다.

아래 예를 참조하십시오.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "21-mai-2021";
    DateTimeFormatter JEFormatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.FRANCE);
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

출력:

2021-05-21

따라서 예외를 피하기 위해 날짜에 영어 단어가 포함된 경우 Locale.US를 인수로 전달합니다.

Java에서 일과 월이 있는 문자열 날짜를 문자열 이름으로 변환

문자열 날짜는 Tue, Dec 21, 2021과 같은 영어 약어로 요일 및 월 이름을 포함할 수 있습니다. 이 날짜를 현지 날짜로 변환하려면 앞의 경우와 마찬가지로 ofPattern() 메서드를 사용하여 이 형식을 쉽게 변환할 수 있습니다.

아래 예를 참조하십시오.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "Tue, Dec 21 2021";
    DateTimeFormatter JEFormatter = DateTimeFormatter.ofPattern("E, MMM d yyyy", Locale.US);
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

출력:

2021-12-21

ofPattern() 메소드의 인수로 Locale.US를 전달했습니다. 기본 로케일이 영어가 아닌 경우 예외를 방지하기 위한 것입니다.

Java에서 시간이 있는 문자열 날짜를 LocalDate로 변환

문자열 날짜는 Tuesday, Dec 21, 2021, 10:30:15 PM과 같이 날짜와 함께 시간을 가질 수도 있습니다. 이 날짜를 변환하려면 먼저 ofPattern() 메서드에서 형식을 설정한 다음 parse() 메서드를 사용하여 현지 날짜를 가져와야 합니다.

아래 예를 참조하십시오.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "Tuesday, Dec 21, 2021 10:30:15 PM";
    DateTimeFormatter JEFormatter =
        DateTimeFormatter.ofPattern("EEEE, MMM d, yyyy hh:mm:ss a", Locale.US);
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

출력:

2021-12-21

결론

이 튜토리얼에서는 Java에서 String을 LocalDate로 변환하는 방법에 대해 설명했습니다. 위에서 논의한 형식 외에도 몇 가지 다른 형식을 사용하여 날짜를 가져올 수 있습니다.

관련 문장 - Java Date

관련 문장 - Java String