protected DateTimeData parse(String str) throws SchemaDateTimeException {
  DateTimeData date=new DateTimeData(str,this);
  int len=str.length();
  if (str.charAt(0) != '-' || str.charAt(1) != '-' || str.charAt(2) != '-') {
    throw new SchemaDateTimeException("Error in day parsing");
  }
  date.year=YEAR;
  date.month=MONTH;
  date.day=parseInt(str,3,5);
  if (DAY_SIZE < len) {
    if (!isNextCharUTCSign(str,DAY_SIZE,len)) {
      throw new SchemaDateTimeException("Error in day parsing");
    }
 else {
      getTimeZone(str,date,DAY_SIZE,len);
    }
  }
  validateDateTime(date);
  saveUnnormalized(date);
  if (date.utc != 0 && date.utc != 'Z') {
    normalize(date);
  }
  date.position=2;
  return date;
}

protected DateTimeData parse ( String str ) throws SchemaDateTimeException { DateTimeData date = new DateTimeData ( str , this ) ; int len = str . length ( ) ; if ( str . charAt ( 0 ) != '-' || str . charAt ( 1 ) != '-' || str . charAt ( 2 ) != '-' ) { throw new SchemaDateTimeException ( "Error in day parsing" ) ; } date . year = YEAR ; date . month = MONTH ; date . day = parseInt ( str , 3 , 5 ) ; if ( DAY_SIZE < len ) { if ( ! isNextCharUTCSign ( str , DAY_SIZE , len ) ) { throw new SchemaDateTimeException ( "Error in day parsing" ) ; } else { getTimeZone ( str , date , DAY_SIZE , len ) ; } } validateDateTime ( date ) ; saveUnnormalized ( date ) ; if ( date . utc != 0 && date . utc != 'Z' ) { normalize ( date ) ; } date . position = 2 ; return date ; }
parses , validates and computes normalized version of gday object
