2016-07-01 1 views
0

날짜를 파싱하여 에포크로 변환하려고합니다. 나는 성공없이 similar question here의 솔루션을 시도 :Java java.time.format.DateTimeParseException on String

String date = "Jun 4 2015";  
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("LLL dd yyyy").withLocale(Locale.ENGLISH); 
LocalDateTime ldt = LocalDateTime.parse(date, formatter); 
System.out.println(date+" "+ldt.toEpochSecond(ZoneOffset.UTC)); 

을 내가 꽤 확신에도 불구하고 나는 Exception in thread "main" java.time.format.DateTimeParseException: Text 'Jun 4 2015' could not be parsed at index 0을 얻을 내 정규 표현식 그. 내가 여기서 무엇을 놓치고 있니?

편집 : 코멘트 다음은

, 나는 LOCALDATE에 LocalDateTime을 변경,하지만 같은 오류가 계속 :

String date = "Jun 4 2015";  
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM d yyyy").withLocale(Locale.ENGLISH); 
LocalDate ldt = LocalDate.parse(date, formatter); 
+0

http://stackoverflow.com/questions/30518954/datetimeformatter-month-pattern-letter-l-fails – Reimeus

+0

"LLL"을 "MMM"으로 바꾸고 같은 결과를 얻었습니다. –

+2

MMM을 사용하는 것만으로는 충분하지 않습니다. 당신이 가지고있는 것은 LocalDate가 아니라 LocalDate입니다 : 전혀 시간이 없습니다. 그것을 LocalDate로 구문 분석 한 다음 LocalDateTime으로 변환 할 시간을 선택하십시오. –

답변

6
String date = "Jun 4 2015"; 
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM d yyyy").withLocale(Locale.ENGLISH); 
    LocalDate ldt = LocalDate.parse(date, formatter); 

잘 구문 분석합니다. "dd"는 10보다 적은 일을 구문 분석하지 않으므로 넣지 마십시오. @JB Nizet이 말했듯이 LocalDate가 아닌 LocalDate를 사용해야합니다.

+0

수정 사항을 참조하십시오. 나는 여전히 같은 오류가 발생합니다. –

+1

프로젝트를 지 웠습니다. 이제 작동합니다 : p –

+0

많은 작은 세부 사항 ... 감사합니다. @JB Nizet 및 stdunbar –