Я пытаюсь получить TimeZone для пользователя.Есть ли способ получить timeZone (только) код страны (действительный код ISO-3166)?
Для этого у меня есть код страны, который является действующим кодом страны ISO. Эти коды представляют собой двухбуквенные коды в верхнем регистре, как определено в ISO-3166. Вы можете найти полный список этих кодов на ряде сайтов, таких как: http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html
Я думаю, что ответ «нет, потому что это manytomany отношения ... там может быть много часовых поясов для такой страны, как США. .. ". Это проблема ...
Я tryied что-то вроде:
//CountryEnum contains ISO_3166 values (http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html)
//List all country to test timezone:
for (int i = 0; i < CountryEnum.values().length; i++) {
String isoCountryCode = CountryEnum.values()[i].name();// Get the iso country code
Locale locale = new Locale(isoCountryCode);// Build a country specific locale
Calendar calendar = Calendar.getInstance(locale);// Build a calendar with the specific locale
String timeZone = calendar.getTimeZone().getDisplayName();// Build a timeZone with the calendar
System.out.println("LOCALE : "+locale+"/COUNTRY: "+isoCountryCode+"/TIMEZONE: "+timeZone);
}
Но это всегда возвращает сервер TimeZone ...
Любые идеи?
Интересно , в одном часовом поясе есть другие крупные страны; как Индия, так и Китай относятся к этой категории. Индия обычно охватывает два часовых пояса; Китай будет охватывать 4 часовых пояса. –
Yup - некоторые страны выбрали здравый смысл, когда дело доходит до часовых поясов :) –
Sanity - yes; одного вида. Но в Китае, если солнце поднимается в 5 часов утра на восточном побережье, оно не поднимается примерно до 8 утра на западном краю пустыни Гоби. И если он будет установлен в 7 часов вечера на восточном побережье, он не будет установлен до 10 часов вечера на западе. –