Java에서 문자열을 LocalDate로 변환
-
Java에서
parse()
메소드를 사용하여 문자열을LocalDate
로 변환 -
Java에서
parse()
및ofPattern()
메서드를 사용하여 문자열을LocalDate
로 변환 - Java에서 월이 문자열 이름으로 포함된 문자열 날짜 변환
- Java에서 일과 월이 있는 문자열 날짜를 문자열 이름으로 변환
-
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 요일 가져 오기
- java.util.Date의 시간대 설정
- Java에서 Zellers 합동을 사용하여 요일 찾기
- 자바 날짜 대 LocalDate
- Java에서 YYYY-MM-DD 형식의 달력 날짜