Новый файл информации о часовом поясе Java не поддерживает AEST/AEDT

http://www.oracle.com/technetwork/java/javase/tzdata-versions-138805.html

В приведенной выше ссылке на веб-сайт Oracle говорится, что с версии tzdata2014f Java поддерживает AEST/AEDT вместо EST для австралийского часового пояса, но у меня есть текущая версия tzdata2014i, но она не отображает только EST. Я что-то пропустил или мне нужно что-то делать?

Вот небольшой пример программы, которую я использовал,

  import java.util.*;

public class TZ {
 public static void main(String[] args) {

 System.out.println(System.getProperty("java.home"));
  for (String id : TimeZone.getAvailableIDs()) {
   if (!id.startsWith("Australia/")) continue;
   TimeZone tz = TimeZone.getTimeZone(id);
   System.out.println(id + ": " + "Daylight: False : " + tz.getDisplayName(false, TimeZone.SHORT) + "/" + " Daylight: True : "+ tz.getDisplayName(true, TimeZone.SHORT));
  }
 }
}

И вот моя версия файла данных часового пояса

C:>java -jar tzupdater.jar -V tzupdater версия 1.4.9-b01 Версия данных часового пояса JRE: tzdata2014i Версия данных встроенного часового пояса: tzdata2014i

Заранее благодарю за любую помощь.

С уважением, Бенни

1 ответ

Ваш вопрос отвечает сам. По состоянию на tzdata2014f и позже A будет включено:

Аббревиатуры восточного австралийского часового пояса теперь AEST/AEDT, а не EST, и аналогично для других австралийских зон. То есть для восточного стандарта и летнего времени аббревиатуры AEST и AEDT вместо прежнего EST для обоих; аналогично, ACST/ACDT, ACWST/ACWDT и AWST/AWDT теперь используются вместо прежних CST, CWST и WST.

Это изменение не влияет на смещения UTC, только сокращения часового пояса.

Вы говорите, что используете tzdata2014i, который идет после tzdata2014f. Так почему вы не понимаете, что больше не видите EST?

Названия часовых поясов

Кстати, вы не должны использовать эти 3-4 буквенные сокращения. Они не являются истинными часовыми поясами, не стандартизированы и не уникальны (как показано здесь EST столкновение).

Вместо этого используйте правильные имена часовых поясов IANA в формате continent/region, Например, Australia/Sydney,

Instant instant = Instant.now();
ZoneId zoneId = ZoneId.of( "Australia/Sydney" );
ZonedDateTime zdt = instant.atZone( zoneId );

instant.toString (): 2016-09-29T22: 42: 40.063Z

now.toString (): 2016-09-30T08: 42: 40.063 + 10: 00 [Австралия / Сидней]

К вашему сведению, в Википедии есть страница о времени в Австралии.

Другие вопросы по тегам