'Z' 리터럴로 날짜를 구문 분석하는 SimpleDateFormat
SimpleDateFormat을 사용하여 ISO 8601 형식의 날짜를 구문 분석하려고 하면 올바르게 구문 분석하지 못할 수 있습니다. UTC를 기본 참조 지점으로 나타내는 'Z' 리터럴을 처리합니다. 예를 들어, "yyyy-MM-dd'T'HH:mm:ss" 패턴을 사용하여 "2010-04-05T17:16:00Z" 문자열을 구문 분석하면 현지 시간이 정확하지 않게 됩니다.
기존 패턴 "yyyy-MM-dd'T'HH:mm:ssz" 및 "yyyy-MM-dd'T'HH:mm:ssZ"도 'Z' 리터럴을 사용하여 날짜를 구문 분석하는 데 충분하지 않습니다. 'Z' 리터럴은 명시적으로 UTC를 나타내기 때문에 이 동작은 직관에 어긋나는 것처럼 보일 수 있습니다.
해결책
Java 7 이전에는 'Z' 리터럴을 사용하여 날짜를 구문 분석하는 데 명시적인 설정이 필요했습니다. SimpleDateFormat 객체의 TimeZone. 그러나 Java 7 이상에서는 "yyyy-MM-dd'T'HH:mm:ssX" 패턴을 활용하여 UTC 시간대 접미사를 올바르게 구문 분석하고 적용할 수 있습니다.
예:
<code class="java">SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX"); Date date = sdf.parse("2010-04-05T17:16:00Z");</code>
이렇게 하면 날짜가 UTC 시간으로 정확하게 구문 분석됩니다.
대안
또 다른 대안은 Java 8에 도입된 java.time 패키지를 사용하는 것입니다. , 보다 현대적이고 포괄적인 날짜 및 시간 API를 제공합니다. 다음 코드는 java.time을 사용하여 날짜를 구문 분석하는 방법을 보여줍니다.
<code class="java">import java.time.Instant; import java.time.ZonedDateTime; String dateString = "2010-04-05T17:16:00Z"; Instant instant = Instant.parse(dateString); ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Z"));</code>
java.time은 기본적으로 UTC 시간대를 처리하므로 이 접근 방식을 사용하면 복잡한 패턴이나 명시적인 시간대 설정이 필요하지 않습니다.
위 내용은 SimpleDateFormat을 사용하여 Java에서 \'Z\' 리터럴로 날짜를 올바르게 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!