相关疑难解决方法(0)

带有文字且没有分隔符的 DateTimeFormatter 模式不起作用

生成的解析器DateTimeFormatter.ofPattern表现出以下有趣的行为,这阻止了我编写模式来解析像这样的字符串20150100

System.out.println(DateTimeFormatter.ofPattern("yyyyMM").parse("201501", YearMonth::from)); // works
System.out.println(DateTimeFormatter.ofPattern("yyyyMM'aa'").parse("201501aa", YearMonth::from)); // works
System.out.println(DateTimeFormatter.ofPattern("yyyyMM'00'").parse("20150100", YearMonth::from));
// java.time.format.DateTimeParseException: Text '20150100' could not be parsed at index 0
Run Code Online (Sandbox Code Playgroud)

我调试了代码,似乎问题是由超出字符串末尾的年份字段解析引起的(三个 y 和更多的最大宽度始终为 19)。但是,我不明白它如何在没有'00'文字的情况下适用于模式。

有没有办法解决这个问题而不必使用格式化程序构建器?

编辑:

由于下面的 Jarrod 确认它有问题,我做了更多的谷歌搜索,终于找到了错误报告:

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8031085

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8032491

两者都只在 Java 9 中修复......

java java-time

8
推荐指数
1
解决办法
982
查看次数

标签 统计

java ×1

java-time ×1