2016-12-12 3 views
2

나는 다음과 같은 패턴을 사용하여 날짜 문자열을 구문 분석하려고 다음과 같이 yyMMddSTRICT 해결을 다음 DateTimeParseException 다음 내가 할이슈 사용하여 엄격한 해결 스타일

DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat).withResolverStyle(ResolverStyle.STRICT); 
LocalDate.parse(expiryDate, formatter); 

:

java.awt.format.DateTimeParseException : '160501'텍스트를 수 없습니다. 구문 분석 : TemporalAccessor에서 LocalDate를 얻을 수 없습니다. {YearOfEra = 2016, MonthOfYear = 5, DayOfMonth = 1},유형의 ISO 내가 2 월 30 일 같은 날짜 수 있습니다 즉, 기본 해결 스타일에 ResolverStyle.SMART을 swith를 할 때는

을 java.time.format.Parsed.

누군가 도와 드릴 수 있습니까?

+2

나는'java.time' 설계가 인식 할만큼 영리 아니라는 것을 후회 년의 시대 (기호 y)를 예 기적 그레고리 년처럼 취급되어야한다 (기호 U). 또한, 원래의 ISO - 8601 - 종이는 시대에 대해 아무 말도하지 않습니다. 따라서 평년과 월간의 조합은 ISO가 말한 것과 같이 시대를 무시하고 사전 예방 적 그레고리력을 사용하는 것과 같이 실제로 처리되어야합니다. –

답변

4

엄격한 해결사에는 YearOfEra와 함께 시대가 필요합니다. "y"대신 "u"를 사용하도록 패턴을 변경하십시오. 즉 작동합니다. "uuMMdd". 시대 필드의 부재에 - -