2016-08-04 6 views
0

Когда вы создаете экземпляр класса java.util.TimeZone на основе пользовательского идентификатора, который непризнан (например, имеет опечатку), вы получаете часовой пояс GMT.TimeZone - как отличить часовой пояс GMT и непризнанный часовой пояс?

TimeZone timezone = TimeZone.getTimeZone("Europ/Zurich"); //'e' missing in 'Europe' 
System.out.println(timezone.getID()); //result: "GMT" 

Как я могу различать «реальный» часовой пояс GMT и непризнанный?

+0

Сравните идентификатор с оригинальным? – RealSkeptic

+0

Нечего сравнивать. Я получаю пользовательский идентификатор от внешнего источника. Я хочу быть уверенным, был ли это правильный, действительный пользовательский идентификатор –

+0

Сравните этот пользовательский идентификатор с результатом 'getID()' из только что созданного часового пояса, а не просто его печать. Если они не совпадают, это означает, что пользовательский идентификатор не был сам «GMT», поэтому он должен быть недействительным. В любом случае, вы всегда можете проверить идентификатор и список действительных идентификаторов * до * создания часового пояса. – RealSkeptic

ответ

1

Невозможно найти прямой API для этого. Вы можете использовать get ID, а затем искать совпадение. Просто ссылка. здесь

Set<String> timezones = new HashSet<String>(Arrays.asList(TimeZone.getAvailableIDs())); 

System.out.println(timezones.contains("Europ/Zurich")); 
System.out.println(timezones.contains("Europe/Zurich")); 
+0

Пользовательский идентификатор может иметь другой формат (например, GMT + 01: 00), не указанный в доступных идентификаторах –