2016-08-04 11 views
0

Wenn Sie eine Instanz der Klasse java.util.TimeZone basierend auf einer benutzerdefinierten ID erstellen, die nicht erkannt wird (z. B. mit einem Tippfehler), erhalten Sie eine GMT-Zeitzone.TimeZone - wie unterscheidet man zwischen GMT-Zeitzone und nicht erkannter Zeitzone?

TimeZone timezone = TimeZone.getTimeZone("Europ/Zurich"); //'e' missing in 'Europe' 
System.out.println(timezone.getID()); //result: "GMT" 

Wie soll ich zwischen einer "echten" GMT-Zeitzone und einer nicht erkannten unterscheiden?

+0

Vergleichen Sie die ID mit der ursprünglichen? – RealSkeptic

+0

Es gibt nichts zu vergleichen. Ich erhalte die benutzerdefinierte ID von einer externen Quelle. Ich möchte sicher sein, dass es sich um eine korrekte, gültige Benutzer-ID handelt. –

+0

Vergleichen Sie diese benutzerdefinierte ID mit dem Ergebnis von 'getID() 'aus der neu erstellten Zeitzone, anstatt sie nur zu drucken. Wenn sie nicht identisch sind, bedeutet dies, dass die benutzerdefinierte ID nicht selbst "GMT" war und daher ungültig sein muss. Wie auch immer, Sie können die ID immer mit der Liste der gültigen IDs vergleichen, bevor Sie die Zeitzone erstellen. – RealSkeptic

Antwort

1

Kann eine direkte API nicht finden, um dies zu tun. Sie können IDs verwenden und dann nach einer Übereinstimmung suchen. Nur ein Referenzimpl. hier

Set<String> timezones = new HashSet<String>(Arrays.asList(TimeZone.getAvailableIDs())); 

System.out.println(timezones.contains("Europ/Zurich")); 
System.out.println(timezones.contains("Europe/Zurich")); 
+0

Benutzerdefinierte ID kann ein anderes Format haben (z. B. GMT + 01: 00), nicht in den verfügbaren IDs aufgeführt –