ISOChronology.checkNotNull(zoneID, "Time zone ID must not be null");
if (zoneID.equals("UTC") || zoneID.equals("GMT")) {
return UTC;
} else if (zoneID.equals("UTCZ") || zoneID.equals("GMTZ")) {
throw new CalendricalException("Invalid time zone ID: " + zoneID);
} else if (zoneID.startsWith("UTC") || zoneID.startsWith("GMT")) { // not sure about GMT
try {
return timeZone(ZoneOffset.zoneOffset(zoneID.substring(3)));
} catch (IllegalArgumentException ex) {
throw new CalendricalException("Invalid time zone ID: " + ex.toString(), ex);
}
} else {
int pos = zoneID.indexOf(':');
ZoneRulesGroup group;