#java #android
#java #Android
Вопрос:
Привет, я хочу получить название валюты по часовому поясу 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);
Я пытался с помощью этого кода, но не могу его получить. Кто-нибудь скажет мне, в чем ошибка в моем коде и как это сделать? Заранее спасибо.
Комментарии:
1. Что вы подразумеваете под «часовым поясом GMT»? Я не думаю, что GMT означает то, что вы думаете, что это значит…
2. Это означает среднее время по Гринвичу.
3. Часовые пояса довольно обширны, в них нет отдельных стран, а есть только меридианы. Например, Португалия и Великобритания имеют один и тот же часовой пояс, но не одну и ту же валюту, как бы вы узнали только с этими данными, если это валюта Португалии или Великобритании? И тогда, я согласен с Джоном Скитом, GMT означает среднее время по Гринвичу.
4. Таким образом, невозможно получить валюту по часовому поясу. Могу ли я быть прав? K тогда как я могу это получить? пожалуйста, скажите мне.
5. @ashav: Да, я знаю, что означает GMT, но ваше использование «часового пояса GMT» неверно. Похоже, вы думаете, что, например, существует «индийский часовой пояс GMT», что просто неправильно. Осмелюсь сказать, что существуют различные индийские часовые пояса, но ни один из них не является GMT.
Ответ №1:
Не существует надежного сопоставления часовых поясов или названий часовых поясов с валютами. Ваш текущий подход не будет работать во многих странах.
Ответ №2:
Проблема с вашим приведенным выше кодом заключается в том, что Currency
объекты принимают либо 3-буквенное название валюты в виде строки, либо объект Locale. Чтобы получить эту информацию, вам действительно нужно знать страну. К сожалению, часовой пояс не дает вам достаточно конкретной информации о локали.
В конце концов, существует ограниченное количество уникальных часовых поясов и гораздо больше стран. Например, посмотрите на все страны Африки, которые находятся на варианте UTC 1 (статья Википедии GMT)
Для этого вам нужно будет ввести код страны.
Ответ №3:
Currency.getInstance
в качестве параметра принимает коды валют ISO 4217, а не название часового пояса. Многие страны могут использовать один и тот же часовой пояс, вы не можете определить местную валюту по часовому поясу, в котором кто-то находится.
Возможно, вам следует использовать локаль в качестве параметра (возможно, локаль пользователя по умолчанию).