2009-11-11 2 views
7

Ich verwende Joda Time, und ich bin DateTimeZones übergeben, die mit DateTimeZone.forOffsetHours() erstellt werden. Ich möchte diese Zeitzonen mit Standard Zeitzone Akronyme wie "PST", "EST", etc. drucken.Wie können Zeitzonenabkürzungen ausgedruckt werden, wenn Offset-Stunden in Joda Time verwendet werden?

Immer wenn ich DateTimes drucke, die diese Zeitzonen verwenden, bekomme ich eine "hh: mm" Darstellung der Zeitzone anstelle des Namens Akronym.

Hier ist ein Beispiel:

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

Gibt es einen Ausweg aus dem entsprechenden Zeitzone Akronym im letzten Beispiel mit Joda Zeit drucken?

Antwort

6

Nein, es ist nicht möglich, aber es ist keine joda-time-Problem, es ist wegen der Zeitzonen arbeiten.

Der Offset (z. B. UTC-8) bestimmt nicht den Standort, daher bestimmt er auch nicht das Akronym, das vom Standort abhängt. Wie Sie sehen können here, gibt es UTC-8 in mehreren Zeitzonen.

Das erste Beispiel funktioniert, weil Ihre Standardzeitzone PST ist. Die zweite funktioniert, weil Sie nach einer Zeitzone nach ihrem Namen fragen (mit all den Sommerzeit Sachen, etc.). Im dritten Fall erhalten Sie eine feste Zeitzone, die keinen Namen hat.

+0

Ich sehe. Ich dachte, es könnte so etwas sein. Danke für die Info, das macht Sinn. – emmby

Verwandte Themen