code: public static ZonalDateTime parse(
          String text,
          TemporalFormatter<Moment> parser
      ) {
  
          try {
              RawValues rawValues = new RawValues();
              Moment moment = parser.parse(text, rawValues);
              Timezone tz;
  
              if (rawValues.get().hasTimezone()) {
                  tz = toTimezone(rawValues.get().getTimezone(), text);
              } else if (parser.getAttributes().contains(TIMEZONE_ID)) {
                  tz = toTimezone(parser.getAttributes().get(TIMEZONE_ID), text);
              } else {
                  throw new ChronoException("Missing timezone: " + text);
              }
  
              return ZonalDateTime.of(moment, tz);
          } catch (ParseException pe) {
              throw new ChronoException(pe.getMessage(), pe);
          }
  
      }
docs: /*[deutsch]
  <p>Interpretiert den angegebenen Text als {@code ZonalDateTime}. </p>
  
  <p>Hinweis: Diese Methode kann in Lambda-Ausdr&uuml;cken verwendet werden, weil sie <i>checked exceptions</i>
  vermeidet. </p>
  
  @param   text        text to be parsed
  @param   parser      helps to parse given text
  @return  parsed result
  @throws  IndexOutOfBoundsException if the text is empty
  @throws  ChronoException if parsing does not work (for example missing timezone information)
  @since   5.0