year = read_digits(in, 0, 4, -1, "year"); month = read_digits(in, END_OF_YEAR + 1, 2, -1, "month"); day = read_digits(in, END_OF_MONTH + 1, 2, -1, "day"); if (length == END_OF_DAY) break; c = in.charAt(END_OF_DAY); throw fail(in, "too short for yyyy-mm-ddThh:mm"); hour = read_digits(in, 11, 2, ':', "hour"); minute = read_digits(in, 14, 2, -1, "minutes"); pos = END_OF_MINUTES; precision = Precision.MINUTE; throw fail(in, "too short for yyyy-mm-ddThh:mm:ss"); seconds = read_digits(in, 17, 2, -1, "seconds"); pos = END_OF_SECONDS; precision = Precision.SECOND; int tzdHours = read_digits(in, pos, 2, ':', "local offset hours"); if (tzdHours < 0 || tzdHours > 23) { throw fail(in, int tzdMinutes = read_digits(in, pos, 2, -1, "local offset minutes"); if (tzdMinutes > 59) { throw fail(in,
year = read_digits(in, 0, 4, -1, "year"); month = read_digits(in, END_OF_YEAR + 1, 2, -1, "month"); day = read_digits(in, END_OF_MONTH + 1, 2, -1, "day"); if (length == END_OF_DAY) break; c = in.charAt(END_OF_DAY); throw fail(in, "too short for yyyy-mm-ddThh:mm"); hour = read_digits(in, 11, 2, ':', "hour"); minute = read_digits(in, 14, 2, -1, "minutes"); pos = END_OF_MINUTES; precision = Precision.MINUTE; throw fail(in, "too short for yyyy-mm-ddThh:mm:ss"); seconds = read_digits(in, 17, 2, -1, "seconds"); pos = END_OF_SECONDS; precision = Precision.SECOND; int tzdHours = read_digits(in, pos, 2, ':', "local offset hours"); if (tzdHours < 0 || tzdHours > 23) { throw fail(in, int tzdMinutes = read_digits(in, pos, 2, -1, "local offset minutes"); if (tzdMinutes > 59) { throw fail(in,
year = read_digits(in, 0, 4, -1, "year"); month = read_digits(in, END_OF_YEAR + 1, 2, -1, "month"); day = read_digits(in, END_OF_MONTH + 1, 2, -1, "day"); if (length == END_OF_DAY) break; c = in.charAt(END_OF_DAY); throw fail(in, "too short for yyyy-mm-ddThh:mm"); hour = read_digits(in, 11, 2, ':', "hour"); minute = read_digits(in, 14, 2, -1, "minutes"); pos = END_OF_MINUTES; precision = Precision.MINUTE; throw fail(in, "too short for yyyy-mm-ddThh:mm:ss"); seconds = read_digits(in, 17, 2, -1, "seconds"); pos = END_OF_SECONDS; precision = Precision.SECOND; int tzdHours = read_digits(in, pos, 2, ':', "local offset hours"); if (tzdHours < 0 || tzdHours > 23) { throw fail(in, int tzdMinutes = read_digits(in, pos, 2, -1, "local offset minutes"); if (tzdMinutes > 59) { throw fail(in,