Java 8의 DateTimeFormatter는 시간과 시간 사이에 콜론이 없는 ISO 8601 문자열을 구문 분석하는 데 어려움을 겪습니다. 분 오프셋으로 인해 "2018-02-13T10:20:12.120 0000"과 같은 문자열을 Java 8 날짜로 변환하려는 사용자에게 어려움이 발생합니다.
Java 8까지 버그 수정:
Java 8의 버그가 해결될 때까지 다음 해결 방법을 사용하세요.
OffsetDateTime.parse( "2018-02-13T10:20:12.120+0000" , DateTimeFormatter.ofPattern( "uuuu-MM-dd'T'HH:mm:ss.SSSX" ) )
Java 8 버그 수정 후:
OffsetDateTime.parse( "2018-02-13T10:20:12.120+0000" )
잘못된 클래스 사용
Date, Calendar, SimpleDateFormat과 같은 레거시 클래스 사용을 피하고 최신 java.time 클래스를 사용하세요.
오프셋 전용 값에 OffsetDateTime 사용
오프셋은 있지만 시간대는 없는 값의 경우 OffsetDateTime을 사용하세요. ISO 8601 문자열은 일반적으로 java.time 클래스에서 사용되는 표준 형식을 준수합니다. 그러나 Java 8의 버그에는 해결 방법이 필요합니다.
Hacky 해결 방법
누락된 콜론을 포함하도록 입력 문자열을 조작합니다.
String input = "2018-02-13T10:20:12.120+0000".replace( "+0000" , "+00:00" ); OffsetDateTime odt = OffsetDateTime.parse( input );
더 강력한 해결 방법
명시적인 패턴으로 DateTimeFormatter 정의:
String input = "2018-02-13T10:20:12.120+0000" ; DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd'T'HH:mm:ss.SSSX" ); OffsetDateTime odt = OffsetDateTime.parse( input , f );
추가 고려 사항
Java 8 버그는 시간과 분 사이에 콜론이 누락된 오프셋의 구문 분석에 영향을 미칩니다. 이 문제는 0000과 같은 오프셋에 영향을 주지만 00:00에는 영향을 미치지 않습니다.
java.time 클래스는 레거시 날짜 클래스를 대체하고 Java 8 이상에 내장되어 있습니다. 보다 현대적이고 효율적인 날짜-시간 처리 기능을 제공합니다.
위 내용은 Java 8의 오프셋에 콜론이 누락된 ISO 8601 날짜를 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!