// Step 3
// At this point, check for named time zones by looking through
// the locale data from the DateFormatZoneData strings.
// Want to be able to parse both short and long forms.
// optimize for calendar's current time zone
ZoneStringInfo zsinfo = null;
switch (patternCharIndex) {
case 17: // 'z' - ZONE_OFFSET
if (count < 4) {
zsinfo = formatData.getZoneStringFormat().findSpecificShort(text, start);
} else {
zsinfo = formatData.getZoneStringFormat().findSpecificLong(text, start);
}
break;
case 24: // 'v' - TIMEZONE_GENERIC
if (count == 1) {
zsinfo = formatData.getZoneStringFormat().findGenericShort(text, start);
} else if (count == 4) {
zsinfo = formatData.getZoneStringFormat().findGenericLong(text, start);
}
break;
case 29: // 'V' - TIMEZONE_SPECIAL
if (count == 1) {
zsinfo = formatData.getZoneStringFormat().findSpecificShort(text, start);
} else if (count == 4) {
zsinfo = formatData.getZoneStringFormat().findGenericLocation(text, start);
}
break;
}
if (zsinfo != null) {
if (zsinfo.isStandard()) {
tztype = TZTYPE_STD;
} else if (zsinfo.isDaylight()) {
tztype = TZTYPE_DST;
}
tz = TimeZone.getTimeZone(zsinfo.getID());
cal.setTimeZone(tz);
return start + zsinfo.getString().length();
}
// Step 4
// Final attempt - is this standalone GMT/UT/UTC?
int gmtLen = 0;
if (text.regionMatches(true, start, STR_GMT, 0, STR_GMT_LEN)) {