try { AdvancedDateParser parser = new AdvancedDateParser(lang); return (V) LocalDate.from(parser.parse(value).getTemporal()); } catch (ParseException e) { throw new IllegalArgumentException(e.getMessage(), e); try { AdvancedDateParser parser = new AdvancedDateParser(lang); return (V) LocalDateTime.from(parser.parse(value).getTemporal()); } catch (ParseException e) { throw new IllegalArgumentException(e.getMessage(), e); try { AdvancedDateParser parser = new AdvancedDateParser(lang); return (V) ZonedDateTime.from(parser.parse(value).getTemporal()); } catch (ParseException e) { throw new IllegalArgumentException(e.getMessage(), e);