2014-12-10 9 views
5

http://www.oracle.com/technetwork/java/javase/tzdata-versions-138805.htmlNowy czas java informacji strefa plik nie wspiera AEST/AEDT

W powyższym linku strony internetowej Oracle mówią, że od wersji tzdata2014f, Java wspiera AEST/AEDT zamiast EST dla strefy czasowej australijskiego ale mam aktualny tzdata2014i Wersja wciąż nie wyświetla tylko EST. Czy coś mi umknęło, czy jest coś, co muszę zrobić?

Oto mała próbka użyłem programu,

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)); 
    } 
} 
} 

I tu jest mój czas wersja strefa datafile

C:> java -jar tzupdater.jar -V wersji tzupdater 1.4.9-B01 Wersja danych strefy czasowej JRE: tzdata2014i Data wersji strefy wbudowanej: tzdata2014i

Z góry dziękujemy za wszelką pomoc.

Pozdrawiam, Benny

Odpowiedz

0

Twoje Itself odpowiedzi pytanie. Począwszy od tzdata2014f a późniejA będą obejmowały:

australijskie skróty Strefy Wschodniej czasowe są teraz AEST/AEDT nie EST, i podobnie dla pozostałych stref australijskich. Oznacza to, że dla wschodniego standardu i czasu letniego skrótami są AEST i AEDT zamiast poprzedniego EST dla obu; podobnie, ACST/ACDT, ACWST/ACWDT i AWST/AWDT są teraz używane zamiast poprzedniego CST, CWST i WST.

Ta zmiana nie ma wpływu na przesunięcia UTC, a jedynie na strefy czasowe.

Mówisz, że używasz tzdata2014i, która pochodzi po tzdata2014f. Dlaczego więc jesteś zdezorientowany, gdy już nie widzisz EST?

nazwy strefy czasowej

Nawiasem mówiąc, nie należy używać tych 3-4 liter skróty. Nie są to prawdziwe strefy czasowe, nie są ujednolicone i nie są unikatowe (jak widać tutaj z kolizją EST).

Zamiast tego należy użyć proper IANA time zone names w formacie continent/region. Na przykład 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 [Australia/Sydney]

FYI, Wikipedia ma stronę o Time in Australia.