code: def parse_datetime(datetimestring):
      '''
      Parses ISO 8601 date-times into datetime.datetime objects.
      This function uses parse_date and parse_time to do the job, so it allows
      more combinations of date and time representations, than the actual
      ISO 8601:2004 standard allows.
      '''
      try:
          datestring, timestring = re.split('T| ', datetimestring)
      except ValueError:
          raise isodate.ISO8601Error(
              "ISO 8601 time designator 'T' or ' '  missing. Unable to parse "
              "datetime string %r" % datetimestring
          )
      tmpdate = isodate.parse_date(datestring)
      tmptime = isodate.parse_time(timestring)
      return datetime.datetime.combine(tmpdate, tmptimef parse_datetime(datetimestring):
      '''
      Parses ISO 8601 date-times into datetime.datetime objects.
      This function uses parse_date and parse_time to do the job, so it allows
      more combinations of date and time representations, than the actual
      ISO 8601:2004 standard allows.
      '''
      try:
          datestring, timestring = re.split('T| ', datetimestring)
      except ValueError:
          raise isodate.ISO8601Error(
              "ISO 8601 time designator 'T' or ' '  missing. Unable to parse "
              "datetime string %r" % datetimestring
          )
      tmpdate = isodate.parse_date(datestring)
      tmptime = isodate.parse_time(timestring)
      return datetime.datetime.combine(tmpdate, tmptime)
docs: Parses ISO 8601 date-times into datetime.datetime objects.
      This function uses parse_date and parse_time to do the job, so it allows
      more combinations of date and time representations, than the actual
      ISO 8601:2004 standard allows.