2016-08-04 61 views
0

當您根據無法識別的自定義ID(例如,有拼寫錯誤)創建java.util.TimeZone類的實例時,您將獲得GMT時區。TimeZone - 如何區分GMT時區和無法識別的時區?

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

我該如何區分「真實」的GMT時區和無法識別的時區?

+0

比較ID與原來的ID? – RealSkeptic

+0

沒有什麼可比較的。我從外部來源獲取自定義ID。我想確定這是否是正確的,有效的自定義ID –

+0

將自定義ID與新創建的時區中的getID()的結果進行比較,而不是僅將其打印出來。如果它們不相同,則意味着自定義ID本身不是「GMT」,因此它一定是無效的。無論如何,您可以在創建時區之前始終檢查ID與有效ID列表*。 – RealSkeptic

回答

1

無法找到一個直接的API來做到這一點。您可以使用獲取ID,然後查找匹配項。只是一個參考impl。這裏

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

自定義ID可以具有不同的格式(例如GMT + 01:00),未在可用ID中列出 –