code: def _parse_api_time(timestr):
          
          try:
              reg_groups = API_DATE_PATTERN.match(timestr).groups()
              yr, mth, dy, hr, mn, sc, off_sign, off_hr, off_mn = reg_groups
          except AttributeError:
              # UTC dates don't show offsets.
              utc_groups = UTC_API_DATE_PATTERN.match(timestr).groups()
              yr, mth, dy, hr, mn, sc = utc_groups
              off_sign = "+"
              off_hr = off_mn = 0
          base_dt = datetime.datetime(int(yr), int(mth), int(dy), int(hr),
                  int(mn), int(sc))
          delta = datetime.timedelta(hours=int(off_hr), minutes=int(off_mn))
          if off_sign == "+":
              # Time is greater than UTC
              ret = base_dt - delta
          else:
              ret = base_dt + delta
          return ret
docs: Typical expiration times returned from the auth server are in this
          format:
              2012-05-02T14:27:40.000-05:00
          They can also be returned as a UTC value in this format:
              2012-05-02T14:27:40.000Z
          This method returns a proper datetime object from either of these
          formats.