2009-11-11 9 views
7

Używam Joda Time, a mnie mijają DateTimeZones, które są tworzone przy użyciu DateTimeZone.forOffsetHours(). Chciałbym wydrukować te strefy czasowe za pomocą standardowych skrótów strefy czasowej, takich jak "PST", "EST" itp.Jak wydrukować skróty stref czasowych podczas korzystania z godzin przesunięcia w czasie Joda?

Jednak za każdym razem, gdy drukuję DateTimes, które używają tych stref czasowych, otrzymuję reprezentację "hh: mm" strefa czasowa zamiast akronimu nazwy.

Oto przykład:

public class tmp { 
    public static void main(String args[]) { 
     // "PST" 
     System.out.println(DateTimeFormat.forPattern("z").print(new DateTime())); 

     // "PST" 
     System.out.println(DateTimeFormat.forPattern("z").print(new DateTime(DateTimeZone.forTimeZone(TimeZone.getTimeZone("PST"))))); 

     // "-08:00" 
     System.out.println(DateTimeFormat.forPattern("z").print(new DateTime(DateTimeZone.forOffsetHours(-8)))); 
    } 
} 

Czy istnieje sposób, aby wydrukować odpowiedni skrót strefy czasowej w ostatnim przykładzie, używając Joda Time?

Odpowiedz

6

Nie, nie jest to możliwe, ale nie jest to kwestia czasu w jodzie, lecz z powodu działania stref czasowych.

Przesunięcie (np. UTC-8) nie określa położenia, dlatego też nie określa akronimu, który zależy od lokalizacji. Jak widać here, istnieje UTC-8 w wielu strefach czasowych.

Pierwszy przykład działa, ponieważ domyślną strefą czasową jest PST. Drugi działa, ponieważ pytasz o strefę czasową według jej nazwy (z wszystkimi dodatkami do światła dziennego itp.). W trzeciej dostaniesz strefę czasową o ustalonym offsecie, która nie ma powiązanej nazwy.

+0

Rozumiem. Myślałem, że to może być coś takiego. Dzięki za informację, to ma sens. – emmby

Powiązane problemy