private LocalDateTime parseDateTimeFromString()

in data/src/main/java/com/microsoft/azure/kusto/data/format/CslDateTimeFormat.java [95:135]


    private LocalDateTime parseDateTimeFromString(String localDateTimeString) {
        DateTimeFormatter dateTimeFormatter;

        // Try to parse using well-known Kusto masks
        String formatMask = KUSTO_DATETIME_FORMATS.get(localDateTimeString.length());
        if (formatMask != null) {
            try {
                dateTimeFormatter = new DateTimeFormatterBuilder()
                        .appendPattern(formatMask)
                        .parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
                        .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
                        .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
                        .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
                        .toFormatter();
                return LocalDateTime.parse(localDateTimeString, dateTimeFormatter);
            } catch (Exception e) {
            }
        }

        // Try to parse ISO 8601 string without providing mask
        try {
            TemporalAccessor ta = DateTimeFormatter.ISO_INSTANT.parse(localDateTimeString);
            Instant i = Instant.from(ta);
            return Date.from(i).toInstant().atZone(ZoneId.of("UTC")).toLocalDateTime();
        } catch (Exception e) {
        }

        // Old Java SDK approach to parsing, using particular mask
        try {
            if (localDateTimeString.length() < 21) {
                dateTimeFormatter = new DateTimeFormatterBuilder().parseCaseInsensitive()
                        .append(DateTimeFormatter.ofPattern(KUSTO_DATETIME_PATTERN_NO_FRACTIONS)).toFormatter();
            } else {
                dateTimeFormatter = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ofPattern(KUSTO_DATETIME_PATTERN))
                        .toFormatter();
            }
            return LocalDateTime.parse(localDateTimeString, dateTimeFormatter);
        } catch (Exception e) {
            return null;
        }
    }