현지 날짜 구문 분석은 구분없이 작동하지

토마스 철근 :

나는 다음과 같은 방법으로 포맷 된 날짜가 :

사에서 올해는 두 자리의 주 번호를 숫자.

예를 들어 2018 년의 네 번째 주에있을 것 201804을 .

나는 자바 팔의 사용이 날짜 구문 분석 문제가 있어요 LOCALDATEDateTimeFormatterBuilder을 .

여기에 내가 날짜를 구문 분석을 시도하는 방법입니다 :

LocalDate.parse(
    "201804",
    new DateTimeFormatterBuilder().appendPattern("YYYYww").parseDefaulting(WeekFields.ISO.dayOfWeek(), 1).toFormatter()
);

실행은 다음과 같은 예외가 발생합니다 :

java.time.format.DateTimeParseException : 텍스트 '201804'는 인덱스 0을 구문 분석 할 수 없습니다

이상한 행동 내가 날짜 부분 사이에 구분 기호를 추가 할 때, 예외가 더 이상 발생되지 않고 있다는 것입니다 :

LocalDate.parse(
    "2018 04",
    new DateTimeFormatterBuilder().appendPattern("YYYY ww").parseDefaulting(WeekFields.ISO.dayOfWeek(), 1).toFormatter()
);

결과 :

2018년 1월 22일

내가 포맷터와 함께 실종 일이 있습니까?

그들은했다 :

당신이 사용할 수있는 appendValue

이 방법은 '인접 값 파싱'라고도 파싱 특수 기술을 지원한다. 이 기술은 가치 가변 또는 고정 폭, 하나 이상의 다음 고정 길이 값하는 문제를 해결한다. 표준 파서 욕심, 따라서 정상적으로 하나의 가변 폭을 따라 고정 된 폭 값 파서에 필요한 숫자를 훔치는 것.

조치는 '인접 가치 분석'을 시작하는 데 필요하지 않습니다. appendValue 호출이 이루어지면, 빌더 인접한 값 파싱 셋업 모드로 진입한다.

이 작품 그래서 :

LocalDate.parse(
                "201804",
                new DateTimeFormatterBuilder()
                        .appendValue(YEAR, 4)
                        .appendValue(ALIGNED_WEEK_OF_YEAR, 2)
                        .parseDefaulting(WeekFields.ISO.dayOfWeek(), 1).toFormatter()
        );

추천

출처http://43.154.161.224:23101/article/api/json?id=185878&siteId=1