code: def rfc3339_to_datetime(data):
      
      try:
          ts = time.strptime(data, '%Y-%m-%d')
          return date(*ts[:3])
      except ValueError:
          pass
  
      try:
          dt, _, tz = data.partition('Z')
          if tz:
              tz = offset(tz)
          else:
              tz = offset('00:00')
          if '.' in dt and dt.rsplit('.', 1)[-1].isdigit():
              ts = time.strptime(dt, '%Y-%m-%dT%H:%M:%S.%f')
          else:
              ts = time.strptime(dt, '%Y-%m-%dT%H:%M:%S')
          return datetime(*ts[:6], tzinfo=tz)
      except ValueError:
          raise ValueError('date-time {!r} is not a valid rfc3339 date representation'.format(data))
docs: convert a rfc3339 date representation into a Python datetime