code: public static ZonedDateTime jodaParse( String iso8601 ) throws DateTimeParseException {
          CheckArg.isNotNull(iso8601, "iso8601");
          TemporalAccessor parse = JODA_ISO8601_FORMATTER.parse(iso8601);
          LocalDate localDate = LocalDate.from(parse);
          LocalTime localTime = parse.isSupported(ChronoField.HOUR_OF_DAY) ? LocalTime.from(parse) : LocalTime.MIDNIGHT;
          ZoneId zoneId = parse.isSupported(ChronoField.OFFSET_SECONDS) ? ZoneId.from(parse) : UTC;
          return ZonedDateTime.of(localDate, localTime, zoneId);    
      }
docs: Creates a {@link ZonedDateTime} instance based on the given pattern in ISO 8601 format, compatible with the Joda date-time
  library.
  <p>
  Note that there is no direct correspondence between the JODA-style dates and the new JDK 8 date, especially
  when it comes to handling milliseconds.
  </p>
  
  @param iso8601 a {@link String} representing a date and/or time pattern, may not be null
  @return a {@link ZonedDateTime} instance, never {@code null}
  
  @throws java.time.format.DateTimeParseException if the given pattern cannot be parsed