2014-12-15 2 views
2

안드로이드 프로그램에서 시간대의 "이름"을 보여주고 싶습니다. "GMT + 8 : 00"이라고 말한 다음 "홍콩"을 표시하십시오. 검색을 통해 getDisplayName 함수가 제 목적을 분리해야합니다.안드로이드에서 TimeZone의 이름을 얻는 방법

http://developer.android.com/reference/java/util/TimeZone.html#getDisplayName(boolean은 INT는 java.util.Locale의)

그러나, 내 자신의 프로그램에서,이 기능은 표시 "GMT + 8 : 00"하지만 난 구글 오픈 소스 프로젝트에 "하는 getDisplayName"를 사용하는 경우, 그것은 대신 "홍콩"이라는 이름을 보여줄 것입니다.

누구나 이유를 알고 있습니까?

답변

1

TimeZone tz = TimeZone.getDefault(); 
System.out.println(tz.getID()); 

getDisplayName 반환 시간대 및 getId 반환 시간대 위치 이름을보십시오.

+0

나는 시도했다. 그러나 정확한 위치 이름 대신 "아시아/홍 콩"을 표시합니다. 하지만 귀하의 제안에 감사드립니다, 그것은 내 프레 젠 테이션 방식에 조금 더 가깝습니다. –

5

귀하에게 달려 있습니다.

Calendar calendar = Calendar.getInstance(); 

Log.d(LOG_TAG, "=== print TimeZone.getDefault() ==="); 
Log.d(LOG_TAG, String.valueOf(TimeZone.getDefault())); 

Log.d(LOG_TAG, "=== print TimeZone.getDefault().getID() ==="); 
Log.d(LOG_TAG, TimeZone.getDefault().getID()); 

Log.d(LOG_TAG, "=== print Locale.getDefault() ==="); 
Log.d(LOG_TAG, String.valueOf(Locale.getDefault())); 

Log.d(LOG_TAG, "=== print calendar.getTimeZone()... ==="); 
Log.d(LOG_TAG, String.valueOf(calendar.getTimeZone())); 

Log.d(LOG_TAG, "=== print calendar.getTimeZone().displayName() ==="); 
Log.d(LOG_TAG, calendar.getTimeZone().getDisplayName()); 

Log.d(LOG_TAG, "=== print timezone displayName without locale and Timezone SHORT ==="); 
Log.d(LOG_TAG, calendar.getTimeZone().getDisplayName(false, TimeZone.SHORT)); 

Log.d(LOG_TAG, "=== print timezone displayName without locale and Timezone LONG ==="); 
Log.d(LOG_TAG, calendar.getTimeZone().getDisplayName(false, TimeZone.LONG)); 

출력 :

D/MyActivity: === print TimeZone.getDefault() === 
D/MyActivity: libcore.util.ZoneInfo[id="Brazil/East",mRawOffset=-10800000,mEarliestRawOffset=-10800000,mUseDst=true,mDstSavings=3600000,transitions=128] 

D/MyActivity: === print TimeZone.getDefault().getID() === 
D/MyActivity: Brazil/East 

D/MyActivity: === print Locale.getDefault() === 
D/MyActivity: fr_FR 

D/MyActivity: === print calendar.getTimeZone()... === 
D/MyActivity: libcore.util.ZoneInfo[id="Brazil/East",mRawOffset=-10800000,mEarliestRawOffset=-10800000,mUseDst=true,mDstSavings=3600000,transitions=128] 

D/MyActivity: === print calendar.getTimeZone().displayName() === 
D/MyActivity: heure normale de Brasilia 

D/MyActivity: === print timezone displayName without locale and Timezone SHORT === 
D/MyActivity: GMT-03:00 

D/MyActivity: === print timezone displayName without locale and Timezone LONG === 
D/MyActivity: heure normale de Brasilia 

.

---> 기억 :

Locale.getDefault()이 시간대가 아니라 장치의 언어를 지정합니다.

확인하는 방법에 대한 자바 독 당신이

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#getInstance(java.util.Locale)

를 사용하는 것은 디폴트의 타임 존 및 지정된 로케일을 사용해 달력을 가져옵니다.

그리고 확인이 의견 :

https://stackoverflow.com/a/1389996/3332734

https://stackoverflow.com/a/29371634/3332734

관련 문제