2015-05-20 3 views
1

Я использую TimeZone класс, чтобы получить часовой пояс в формате SHORT как "PST", "EST" и т.д., используя TimeZone.getDefault().getDisplayName(false, TimeZone.SHORT, Locale.getDefault())Android Time Zone Выпуск

Для некоторых устройств этого кусок коды возвращается "PST" т.д., но некоторые из устройств его возвращение "GMT+007" значения , У кого-нибудь есть идея, что может быть изменением, которое я делаю, чтобы оно соответствовало формату "PST".

+2

Не каждый часовой пояс имеет аббревиатуру 3 буквы, особенно если вы отключите DST. который может привести к тому, что он будет на час (вызов часового пояса PST с отключением летнего времени не соответствует действительности, поэтому он этого не сделает). Сама документация говорит, что «Запросы на этот стиль могут привести к смещениям GMT, таким как GMT-08: 00». –

+0

Исправить GabeSechan. Есть ли какой-либо выход, я могу сделать его последовательным. Мое требование - получить время в этих форматах HAST («США/Гавайи», «UTC-10: 00»), PST («США/Тихоокеанский регион», «UTC-08: 00»). Так что, если я могу получить SHORT-форму, которая также прекрасна. –

ответ

0

Сокращенное наименование является частью базы данных часового пояса. Похоже, что некоторые устройства отправляют базы данных часовых поясов, которые не включают эту информацию, или библиотеки которых игнорируют ее.

Чтобы сделать это согласованным, я бы включил отображение, которое отображает длинные имена в короткие имена. Но тогда вам нужно будет поддерживать это самостоятельно, и вам также нужно получить длинное имя (например, «US/Hawaii») для каждого часового пояса, я не знаю, возможно ли это для вас, это зависит от варианта использования.

Также помните, что короткие названия часовых поясов неоднозначны, например, есть много часовых поясов, называемых EST.

Смежные вопросы