Аризона TimeZone Day Light Saving - PullRequest
       15

Аризона TimeZone Day Light Saving

3 голосов
/ 01 ноября 2010

Я пытаюсь узнать текущее время в определенных часовых поясах.Я попробовал следующий код.

Calendar j = new GregorianCalendar(TimeZone.getTimeZone("US/Mountain"));
j.setTimeInMillis(Calendar.getInstance().getTimeInMillis());
System.out.println(j.get(Calendar.HOUR_OF_DAY)+":"+j.get(Calendar.MINUTE));
TimeZone tz = TimeZone.getTimeZone("US/Mountain");
System.out.println("tz.getRawOffset()"+tz.getRawOffset()/3600);
System.out.println(tz.getDSTSavings());
System.out.println

(tz.inDaylightTime(new Date()));

Ответ, который я получил, удивителен - 16:57 - неверно через 1 час tz.getRawOffset () - 7000 3600000 true - почему летнее время верно для Аризоны?Как узнать точное время настенных часов Феникса или любого другого города в США?

Ответы [ 3 ]

8 голосов
/ 01 ноября 2010

Аризона - в часовом поясе горы, но не наблюдает летнее время . Если вы указали часовой пояс «США / гора», то компьютер будет применять правила, используемые большинством штатов в часовом поясе горы, которые включают наблюдение за переходом на летнее время. Чтобы получить правила для Аризоны (которые не включают DST), вам нужен часовой пояс "США / Аризона" (или "Америка / Феникс"). В стране навахо вам нужен часовой пояс с именем "навахо".

Чтобы избавить себя от некоторых неприятностей, всегда старайтесь использовать названия из «Америка / *», где вы можете выбрать название города, в котором действуют те же правила часового пояса, что и в интересующем вас месте.

Чтобы получить правильное время в правильном часовом поясе для любого города в мире, вы просто должны ознакомиться с именами в базе данных часовых поясов Олсона и их значениями. В то время как вы обычно думаете, что термин «часовой пояс» означает время суток в середине зимы (когда все соблюдают стандартное время), в базе данных Olson имя часового пояса представляет всю историю правил перехода на летнее время и правил часового пояса. для конкретного региона.

В качестве примера, хотя Индиана сейчас соблюдает восточное время и наблюдает летнее время (за исключением нескольких округов около Чикаго, которые в центральное время, как Чикаго), до 2006 года они не наблюдали летнее время. Часовой пояс с именем "США / Индиана" (или "Америка / Индианаполис") был создан, чтобы охватить этот регион, и даже сегодня вы все равно хотели бы использовать часовой пояс "Америка / Индианаполис", когда говорите об Индиане, так что запросы о датах и до 2006 года можно было бы ответить правильно.

3 голосов
/ 01 ноября 2010

Большая часть Аризоны не соблюдает летнее время, но народ навахо внутри Аризоны соблюдает летнее время.

1 голос
/ 01 ноября 2010

Информация о зоне может быть получена напрямую для многих крупных городов мира. Это включает в себя Феникс, который имеет идентификатор зоны "Америка / Феникс".

Список доступных идентификаторов зон можно найти с помощью метода TimeZone.getAvailableIDs () или путем ручной проверки содержимого каталога JRE lib / zi .

Как отмечали другие авторы, информация о зоне "США / Аризона" отличается от "США / гора".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...