code: protected int[] parseTime(CharSequenceScanner scanner) {
  
      int hour = read2Digits(scanner);
      boolean colon = scanner.expect(':');
      int minute = read2Digits(scanner);
      int second = 0;
      if (minute == -1) {
        if (!colon) {
          minute = 0;
        }
      } else {
        colon = scanner.expect(':');
        second = read2Digits(scanner);
        if ((second == -1) && (!colon)) {
          second = 0;
        }
        if (((hour < 0) || (hour > 23)) || ((minute < 0) || (minute > 59)) || ((second < 0) || (second > 59))) {
          throw new IllegalDateFormatException(scanner.getOriginalString());
        }
      }
      return new int[] { hour, minute, second };
    }
docs: This method parses the time (or timezone offset) from the given {@code scanner}. The format is
  {@code hh[[:]mm[[:]ss]]}.
  
  @param scanner is the parser pointing to the time.
  @return an int-array containing the hour, minute and second in that order.