>  기사  >  Java  >  SimpleDateFormat을 사용하여 Java에서 \'Z\' 리터럴로 날짜를 올바르게 구문 분석하는 방법은 무엇입니까?

SimpleDateFormat을 사용하여 Java에서 \'Z\' 리터럴로 날짜를 올바르게 구문 분석하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-04 02:26:021001검색

How to Correctly Parse Dates with 'Z' Literal in Java using SimpleDateFormat?

'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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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