在java中有没有办法将两种不同的日期时间格式解析为LocalDateTime或Instant?

在java中有没有办法将两种不同的日期时间格式解析为LocalDateTime或Instant?,date,java-8,datetime-format,Date,Java 8,Datetime Format,我们如何验证给定字符串的两种格式yyyy-MM-dd和yyyy-MM-dd'T'HH:MM:SSX,该字符串可以是这两种格式中的任何一种,并将其转换为Instant或LocalDateTime LocalDateTime dateTime; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd[\'T\'HH:mm:SSX]"); TemporalAccessor temporalAccesso

我们如何验证给定字符串的两种格式yyyy-MM-dd和yyyy-MM-dd'T'HH:MM:SSX,该字符串可以是这两种格式中的任何一种,并将其转换为Instant或LocalDateTime

LocalDateTime dateTime;
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd[\'T\'HH:mm:SSX]");
    TemporalAccessor temporalAccessor = formatter.parseBest(now, LocalDateTime::from, LocalDate::from);
    if (temporalAccessor instanceof LocalDateTime) {
      dateTime = (LocalDateTime)temporalAccessor;
    } else {
      dateTime = ((LocalDate)temporalAccessor).atStartOfDay();
    }

当使用上述格式时,它总是解析为LocalDate并截断时间部分。

将格式更改为yyyy-MM-dd[\'T\HH:MM:ssX]修复了它