java.time:DateTimeParseException for date“;2015090102330166“;

java.time:DateTimeParseException for date“;2015090102330166“;,java,java-8,java-time,Java,Java 8,Java Time,给出了错误: java.time.format.DateTimeParseException:无法在索引0处分析文本“2015090102330166” 解决方法是使用DateTimeFormatterBuilder和每个字段的固定宽度自己构建格式化程序。此代码生成正确的结果 LocalDateTime.parse("20150901023302166", DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")) 因此,从模式构建格式化程序时,格式化程

给出了错误:

java.time.format.DateTimeParseException:无法在索引0处分析文本“2015090102330166”


解决方法是使用
DateTimeFormatterBuilder
和每个字段的固定宽度自己构建格式化程序。此代码生成正确的结果

LocalDateTime.parse("20150901023302166", DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"))

因此,从模式构建格式化程序时,格式化程序似乎存在问题。搜索OpenJDK JIRA后,这似乎确实是一个bug,如JDK 9中所述,并计划在JDK 9中修复。

感谢您的帮助,我将一直使用该代码,直到JDK9Wow-我从来没有想到构建格式化程序时会出现问题。很好的捕获:)将删除我的答案。。。
public static void main(String[] args) {
    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                                        .appendValue(ChronoField.YEAR, 4)
                                        .appendValue(ChronoField.MONTH_OF_YEAR, 2)
                                        .appendValue(ChronoField.DAY_OF_MONTH, 2)
                                        .appendValue(ChronoField.HOUR_OF_DAY, 2)
                                        .appendValue(ChronoField.MINUTE_OF_HOUR, 2)
                                        .appendValue(ChronoField.SECOND_OF_MINUTE, 2)
                                        .appendValue(ChronoField.MILLI_OF_SECOND, 3)
                                        .toFormatter();

    System.out.println(LocalDateTime.parse("20150901023302166", formatter));
}