public Object fromString()

in xstream/src/java/com/thoughtworks/xstream/core/util/ISO8601JavaTimeConverter.java [117:280]


    public Object fromString(final String str) {
        try {
            final OffsetDateTime odt = OffsetDateTime.parse(str);
            return GregorianCalendar.from(odt.atZoneSameInstant(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final LocalDateTime ldt = LocalDateTime.parse(str);
            return GregorianCalendar.from(ldt.atZone(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final Instant instant = Instant.parse(str);
            return GregorianCalendar.from(instant.atZone(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final OffsetDateTime odt = BASIC_DATE_TIME.parse(str, OffsetDateTime::from);
            return GregorianCalendar.from(odt.atZoneSameInstant(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final OffsetDateTime odt = STD_ORDINAL_DATE_TIME.parse(str, OffsetDateTime::from);
            return GregorianCalendar.from(odt.atZoneSameInstant(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final OffsetDateTime odt = BASIC_ORDINAL_DATE_TIME.parse(str, OffsetDateTime::from);
            return GregorianCalendar.from(odt.atZoneSameInstant(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final OffsetTime ot = OffsetTime.parse(str);
            return GregorianCalendar.from(ot.atDate(LocalDate.ofEpochDay(0)).atZoneSameInstant(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final OffsetTime ot = BASIC_TIME.parse(str, OffsetTime::from);
            return GregorianCalendar.from(ot.atDate(LocalDate.ofEpochDay(0)).atZoneSameInstant(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final OffsetTime ot = ISO_TTIME.parse(str, OffsetTime::from);
            return GregorianCalendar.from(ot.atDate(LocalDate.ofEpochDay(0)).atZoneSameInstant(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final OffsetTime ot = BASIC_TTIME.parse(str, OffsetTime::from);
            return GregorianCalendar.from(ot.atDate(LocalDate.ofEpochDay(0)).atZoneSameInstant(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final TemporalAccessor ta = ISO_WEEK_DATE_TIME.withLocale(Locale.getDefault()).parse(str);
            final Year y = Year.from(ta);
            final MonthDay md = MonthDay.from(ta);
            final OffsetTime ot = OffsetTime.from(ta);
            return GregorianCalendar.from(ot.atDate(y.atMonthDay(md)).atZoneSameInstant(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final TemporalAccessor ta = BASIC_WEEK_DATE_TIME.withLocale(Locale.getDefault()).parse(str);
            final Year y = Year.from(ta);
            final MonthDay md = MonthDay.from(ta);
            final OffsetTime ot = OffsetTime.from(ta);
            return GregorianCalendar.from(ot.atDate(y.atMonthDay(md)).atZoneSameInstant(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final LocalDate ld = LocalDate.parse(str);
            return GregorianCalendar.from(ld.atStartOfDay(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final LocalDate ld = LocalDate.parse(str, DateTimeFormatter.BASIC_ISO_DATE);
            return GregorianCalendar.from(ld.atStartOfDay(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final LocalDate ld = LocalDate.parse(str, DateTimeFormatter.ISO_ORDINAL_DATE);
            return GregorianCalendar.from(ld.atStartOfDay(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final LocalDate ld = BASIC_ORDINAL_DATE.parse(str, LocalDate::from);
            return GregorianCalendar.from(ld.atStartOfDay(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final LocalDate ld = LocalDate.parse(str, DateTimeFormatter.ISO_WEEK_DATE.withLocale(Locale.getDefault()));
            return GregorianCalendar.from(ld.atStartOfDay(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final TemporalAccessor ta = BASIC_WEEK_DATE.withLocale(Locale.getDefault()).parse(str);
            final Year y = Year.from(ta);
            final MonthDay md = MonthDay.from(ta);
            return GregorianCalendar.from(y.atMonthDay(md).atStartOfDay(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final LocalDateTime ldt = STD_DATE_HOUR.parse(str, LocalDateTime::from);
            return GregorianCalendar.from(ldt.atZone(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final LocalTime lt = STD_HOUR.parse(str, LocalTime::from);
            return GregorianCalendar.from(lt.atDate(LocalDate.ofEpochDay(0)).atZone(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final LocalTime lt = LocalTime.parse(str);
            return GregorianCalendar.from(lt.atDate(LocalDate.ofEpochDay(0)).atZone(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final YearMonth ym = YearMonth.parse(str);
            return GregorianCalendar.from(ym.atDay(1).atStartOfDay(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final Year y = Year.parse(str);
            return GregorianCalendar.from(y.atDay(1).atStartOfDay(ZoneId.systemDefault()));
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        try {
            final TemporalAccessor ta = STD_YEAR_WEEK.withLocale(Locale.getDefault()).parse(str);
            final int y = ta.get(WeekFields.ISO.weekBasedYear());
            final int w = ta.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);
            return GregorianCalendar.from(LocalDateTime
                .from(ta)
                .with(WeekFields.ISO.weekOfYear(), y)
                .with(WeekFields.ISO.weekOfWeekBasedYear(), w)
                .atZone(ZoneId.systemDefault()));
// } catch (final IllegalArgumentException e) { // TODO: DateTimeParseException
        } catch (final DateTimeParseException e) {
            // try with next formatter
        }
        final ConversionException exception = new ConversionException("Cannot parse date");
        exception.add("date", str);
        throw exception;
    }