code: public static LocalDate parseLocalDate(String value) {
      TemporalAccessor temporalAccessor =
          DateTimeFormatter.ofPattern(LOOSE_PARSER_FORMAT)
              .parseBest(value, ZonedDateTime::from, LocalDate::from);
  
      if (temporalAccessor instanceof ZonedDateTime) {
        return ((ZonedDateTime) temporalAccessor).toLocalDate();
      }
      return (LocalDate) temporalAccessor;
    }
docs: Tries to parse a value representing a LocalDate. Tries many formats, but does require that the
  date month and year are provided in yyyy-mm-dd form. If too much information is provided, such
  as time and/or time zone, will simply truncate those away.
  
  @param value the value to parse.
  @return the parsed {@link LocalDate}
  @throws DateTimeParseException if parsing fails