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;
}
}