>  기사  >  Java  >  Java.time은 Java 9 이전에 몇 초 단위로 구문 분석을 할 수 있습니까?

Java.time은 Java 9 이전에 몇 초 단위로 구문 분석을 할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-01 16:11:02399검색

 Can Java.time Parse Fractions of Seconds Before Java 9?

java.time은 초 단위까지 구문 분석할 수 없나요?

소개

Java 8의 초기 릴리스와 함께 java.time 패키지가 등장했습니다. 몇 초 단위로 구문 분석하는 데 문제가 있습니다. 이 문제는 초의 일부를 나타내기 위해 DateTimeFormatter 패턴에 "SS"를 추가하고 예외가 발생할 때 발생했습니다.

문제

"SS" 패턴, 예외가 발생했습니다. 이것이 작동했어야 한다고 문서에 나와 있었기 때문에 이는 놀라운 일이었습니다.

솔루션

이 문제는 나중에 Java 9에서 보고되어 수정되었습니다. 그러나 Java 9가 출시될 때까지 해결 방법이 필요합니다. . JDK 버그 보고서에 언급된 대로 다음 해결 방법을 사용할 수 있습니다.

DateTimeFormatter dtf =
  new DateTimeFormatterBuilder()
  .appendPattern("yyyyMMddHHmmss")
  .appendValue(ChronoField.MILLI_OF_SECOND, 3)
  .toFormatter();

문제 및 그 의미

문제의 핵심은 다음과 같은 경우 몇 초 단위로 구문 분석되는지에 있습니다. 문자가 인접해 있습니다. 인접 값 구문 분석은 숫자 표현을 가정하는appendValue(...) 메서드에서만 지원됩니다. 내부적으로 분수 부분에 사용되는appendFraction(...) 메서드는 인접 값 구문 분석을 처리하지 않습니다. 이러한 제한으로 인해 패턴에 인접한 숫자가 포함된 경우 초 단위까지 정확하게 해석할 수 없습니다.

대안 및 업데이트

위의 해결 방법으로 문제가 해결되지만 모든 사용 사례에 이상적이지는 않을 수 있습니다. 다른 대안은 다음과 같습니다.

  • SimpleDateFormat을 사용하지만 분수를 잘못 해석할 수 있다는 점에 유의하세요.
  • 공식 수정을 위해 Java 9(또는 그 이상)까지 기다리고 있습니다.
  • Joda-Time 또는 Time4J와 같은 타사 라이브러리를 사용합니다.

업데이트: Java 9 수정

Java 9에서는 문제가 해결되었습니다. 이제 "SS" 패턴을 사용하거나 ChronoField.MICRO_OF_SECOND 또는 ChronoField.NANO_OF_SECOND 필드를 사용하여 초 단위 부분을 올바르게 구문 분석할 수 있습니다.

위 내용은 Java.time은 Java 9 이전에 몇 초 단위로 구문 분석을 할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.