Новый файл информации о часовом поясе 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 [Австралия / Сидней]
К вашему сведению, в Википедии есть страница о времени в Австралии.