아래 Java8의 LocalDate.parse()를 그냥 예제대로 사용하면, ParseException이 발생한다. Java8의 초창기 버전에서는 아래 코드를 문제없이 지원했으나, 최근 버전에서는 세밀해졌다.
@Test
public void formatterTest() {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd MMM uuuu");
String anotherDate = "04 Aug 2015";
LocalDate parsedLocalData = LocalDate.parse(anotherDate, dateTimeFormatter);// 에러 발생
System.out.println(anotherDate + " parses to " + parsedLocalData);
}
Exception
java.time.format.DateTimeParseException: Text '04 Aug 2015' could not be parsed at index 3
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1947)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849)
at java.time.LocalDate.parse(LocalDate.java:400)
해결을 위해서는 Pattern에서 Local 정보를 추가해야 Exception이 발생하지 않는다.
@Test
public void formatterTest() {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd MMM uuuu").withLocale(Locale.ENGLISH);
String anotherDate = "04 Aug 2015";
LocalDate parsedLocalData = LocalDate.parse(anotherDate, dateTimeFormatter);
System.out.println(anotherDate + " parses to " + parsedLocalData);
}
결과
04 Aug 2015 parses to 2015-08-04
'java core' 카테고리의 다른 글
[elasticsearch] 색인 매핑(index mapping)시 옵션 (0) | 2015.06.04 |
---|---|
[java8] java8의 Date와 Time 추가된 API를 이용한 예제 (0) | 2015.05.20 |
java8 & play1.3.0 migration (0) | 2015.05.18 |
Collections.EMPTY_LIST와 UnsupportedOperationException (0) | 2015.05.16 |
Java 8 lamda / Comparator List Sort 예제 (0) | 2015.05.16 |