2016-06-21 1 views
0

Android에서 zzz의 기본 Java 형식을 사용하여 추가 된 시간대를 가져옵니다.Android에서 3 문자 표준 시간대 ID가 일치하지 않습니다.

public static final String DISPLAY_DATE_FORMAT = "MMMM dd, yyyy 'at' hh:mm:ss a zzz";  
SimpleDateFormat formatter = new SimpleDateFormat(
        DISPLAY_DATE_FORMAT); 
formatter.setTimeZone(timeZone); 
date = formatter.format(formattedDateTime); 

아래 코드 그래서 나는 platfrom 모두 얻고있다 결과가

버전에서

그것이 GMT-04 보여주는 6.0.1입니다 찾아주세요 : EST로 00 5.1.1을하는 이상해.

또한 다음 코드

timeZone.getDisplayName(timeZone.inDaylightTime(formattedDateTime),TimeZone.SHORT); 

를 사용하여 시도와 같은 결과를 얻었다. 어쨌든, GMT 값 대신에 EST 값을 얻을 수 있습니다. 이 방법은 오라클에 따라 다르지만 여전히 3 문자 timezoneID를 얻을 수있는 방법이 있습니다.

+0

참조 : http://stackoverflow.com/questions/2807197/get-three-letter-short-timezone-name-as-opposed-to-fourletter –

답변

0

주류 미디어에서 흔히 볼 수있는 3-4 자 약어는 실제 시간대가 아닙니다. 그들은 표준화되지 않았습니다. 그들은 심지어 독특하지 않다!

현대 날짜 시간 라이브러리는 적절한 표준 시간대 이름을 사용하지 않고 이러한 약어를 사용하지 않습니다.

this list of proper time zone names을 참조하십시오. 형식은 continent/region입니다. 예 : America/MontrealAsia/Kolkata.

2016-06-11T12

: 34.56-07 : 00 [미국/로스 엔젤레스] 당신은 악명 번잡하고 잘못 설계되어 오래된 날짜 - 시간 클래스를 사용하는

. Java 8 이상에 내장 된 java.time 프레임 워크로 대체되었습니다. java.time 기능의 대부분은 Java 6 & 7 (ThreeTen-Backport)으로 다시 포팅되고 Android (ThreeTenABP)에 추가로 적용됩니다.