code: @SuppressWarnings("unused")
    public static Date fromISODateTimeUTC(final String val,
                                          final TimeZone tz) throws BadDateException {
      try {
        synchronized (isoDateTimeUTCTZFormat) {
          isoDateTimeUTCTZFormat.setTimeZone(tz);
          return isoDateTimeUTCTZFormat.parse(val);
        }
      } catch (Throwable t) {
        throw new BadDateException();
      }
    }
docs: Get Date from "yyyyMMddThhmmssZ" with timezone
  
  @param val String "yyyyMMddThhmmssZ"
  @param tz TimeZone
  @return Date
  @throws BadDateException on format error