2016-09-01 4 views
0

내 Android 앱에서 RFC 1123 형식의 날짜 - 시간 Thu, 25 Aug 2016 08:59:00 GMT이 표시됩니다. 현지 시간으로 변환해야합니다.RFC-1123 날짜 - 시간 포맷터를 현지 시간으로 변환하는 방법

+1

가능한 [Java 변환 UTC 타임 스탬프에서 로컬 DateTime] (http://stackoverflow.com/questions/18691376/java-convert-utc-timestamp-to-local-datetime) – Mike

+0

@Mike 정확한 복제본이 아닙니다. 이 질문의 제목은 특정 표준화 된 형식 인 RFC 1123을 언급합니다 (요즘은 오래된 표준이지만). –

+0

@Basil Bourque 고맙습니다. – Hamza

답변

3

DateTimeFormatter.RFC_1123_DATE_TIME

java.time 클래스 직접/구문 분석 DateTimeFormatter.RFC_1123_DATE_TIME 상수 통해 RFC 1123 문자열을 생성 할 수있다.

ZonedDateTime zdt = 
    ZonedDateTime.parse( 
     "Thu, 25 Aug 2016 08:59:00 GMT" , 
     DateTimeFormatter.RFC_1123_DATE_TIME 
    ) 
; 

거기에서 원하는 시간대를 조정하십시오.

ZoneId z = ZoneId.of("America/Montreal"); // Or "Asia/Kolkata", etc. 
ZonedDateTime zdtMontreal = zdt.withZoneSameInstant(z); 

참고로, 그 RFC 1123 형식은 끔찍한이며, 요즘 시대에 뒤 떨어진 것입니다. 형식의 문제는 다음과 같습니다. 영어를 사용하기 쉽고, 구문 분석하기 어렵고, 표준화되지 않은 실시간 영역이 아니며 고유하지 않은 3-4 자의 영역 약어를 사용합니다 (!). 대신 :

  • proper IANA-defined time zones을 사용하여 시간대를 지정하십시오.
  • 표준 ISO 8601 형식을 사용하여 텍스트에 serialize합니다.
    java.time 클래스는 날짜/시간 값의 텍스트 표현을 구문 분석/생성 할 때 기본적으로이 형식을 사용합니다.

시간대 조정 및 날짜 - 시간 값 문자열 생성에 대한 자세한 내용은 스택 오버플로 검색을 참조하십시오.

java.time 프레임 워크 나중에 자바 8에 내장되어 java.time 소개

. 이러한 클래스는 java.util.Date, .Calendar, & java.text.SimpleDateFormat과 같이 번거로운 이전 날짜 시간 클래스를 대체합니다.

Joda-Time 프로젝트는 현재 maintenance mode에 있으며, java.time으로 마이그레이션하는 것이 좋습니다.

자세히 알아 보려면 Oracle Tutorial을 참조하십시오. 그리고 많은 예제와 설명을 위해 스택 오버플로를 검색하십시오. java.time 기능의 대부분

ThreeTen-Backport는 자바 6 & 7 백 포팅 또한 (How to use… 참조)에 ThreeTenABPAndroid하도록 구성된다.

ThreeTen-Extra 프로젝트는 추가 클래스로 java.time을 확장합니다. 이 프로젝트는 향후 java.time에 추가 될 수있는 가능성을 입증합니다. 여기에 Interval, YearWeek, YearQuarter 등과 같은 유용한 클래스가 있습니다.

관련 문제