当您基于无法识别的自定义ID创建java.util.TimeZone
类的实例时(例如,有拼写错误),您会得到一个GMT时区。
TimeZone timezone = TimeZone.getTimeZone("Europ/Zurich"); //'e' missing in 'Europe'
System.out.println(timezone.getID()); //result: "GMT"
我应该如何区分"真实"的GMT时区和未识别的时区?
找不到直接的API来执行此操作。您可以使用getID,然后查找匹配项。只是一个参考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"));