code: def parse(value):
          
          match_result = RE_DATETIME.match(value)
          if match_result is None:
              raise ValueError('date data has invalid format "%s"' % (value, ))
  
          date = date_from_match(match_result)
          time = time_from_match(match_result)
          tzinfo = tzinfo_from_match(match_result)
  
          value = datetime.datetime.combine(date, time)
          value = value.replace(tzinfo=tzinfo)
  
          return value
docs: Parse the string datetime.
  
          This supports the subset of ISO8601 used by xsd:dateTime, but is
          lenient with what is accepted, handling most reasonable syntax.
  
          @param value: A datetime string.
          @type value: str
          @return: A datetime object.
          @rtype: B{datetime}.I{datetime}