2011-10-12 2 views
0

안녕하세요 GMT 시간대로 통화 이름을 가져오고 싶습니다. 시간대와 해당 시간대의 이름이 있습니다. 코드는 GMT 시간대로 통화 이름을 얻는 방법은 무엇입니까?

TimeZone tz = TimeZone.getDefault(); 
    String gmt1=TimeZone.getTimeZone(tz.getID()).getDisplayName(false,TimeZone.SHORT); 
    String gmt2=TimeZone.getTimeZone(tz.getID()).getDisplayName(false,TimeZone.LONG); 
    Log.d("Tag","TimeZone : "+gmt1+"\t"+gmt2); 

지금 내가 그 시간대 통화는 루피입니다 보여줄 것입니다 인도 표준 시간 수단의 경우처럼 통화 이름을 얻고 싶은 것입니다.

Currency current=Currency.getInstance(gmt1); 
    String current1=current.toString(); 
    System.out.println(current1); 

이 코드로 시도했지만 얻을 수 없습니다. 아무도 내 코드와 실수를 어떻게 설명합니까? 미리 감사드립니다.

+4

"GMT 시간대"란 무엇을 의미합니까? 나는 GMT가 당신이 의미하는 바를 의미한다고 생각하지 않는다. –

+0

그건 그리니치 표준시를 의미한다. –

+2

표준 시간대는 상당히 확장되어 있으며 단일 국가를 얻지 못하고 경락 만 있습니다. F. 포르투갈과 영국은 동일한 시간대를 공유하지만 동일한 통화는 아닙니다. 포르투갈 또는 영국 통화 인 경우 해당 데이터 만 어떻게 알 수 있습니까? 그리고 나서 Jon Skeet과 동의합니다. GMT는 그리니치 표준시를 의미합니다. – atzu

답변

2

통화에 표준 시간대 또는 표준 시간대 이름의 신뢰할 수있는 매핑이 없습니다. 현재의 접근 방식은 많은 국가에서 작동하지 않습니다.

1

위 코드의 문제는 Currency 개체가 3 자리의 통화 이름을 문자열 또는 Locale 개체로 사용한다는 것입니다. 이 정보를 얻으려면 당신은 정말로 그 나라를 알아야합니다. 불행히도 시간대는 로캘에 대한 정보를 충분히 제공하지 않습니다.

제한된 수의 고유 한 시간대가 있고 더 많은 국가가 있습니다. 예를 들어 UTC + 1의 변형 국가 인 아프리카의 모든 국가를 살펴보십시오 (Wikipedia GMT article)

이 작업을 수행하려면 국가 코드가 필요합니다.

1

Currency.getInstance은 시간대 이름이 아닌 매개 변수로 ISO 4217 통화 코드를 사용합니다. 많은 국가에서 동일한 시간대를 공유 할 수 있습니다. 사용자가있는 시간대로 현지 통화를 말할 수 없습니다.

어쩌면 locale as parameter (아마도 사용자의 기본 로케일)을 사용해야합니다.

관련 문제