private bool ParseZoneAndWhitespace(int start) {
if (start < length) {
char ch = text[start];
if (ch == 'Z' || ch == 'z') {
kind = XsdDateTimeKind.Zulu;
start ++;
}
else if (start + 5 < length) {
if (
Parse2Dig(start + Lz_, ref zoneHour) && zoneHour <= 99 &&
ParseChar(start + Lz_zz, ':') &&
Parse2Dig(start + Lz_zz_, ref zoneMinute) && zoneMinute <= 99
) {
if (ch == '-') {
kind = XsdDateTimeKind.LocalWestOfZulu;
start += Lz_zz_zz;
}
else if (ch == '+') {
kind = XsdDateTimeKind.LocalEastOfZulu;
start += Lz_zz_zz;
}
}
}
}
while(start < length && char.IsWhiteSpace(text[start])) {
start ++;
}
return start == length;
}