【发布时间】:2017-09-15 17:21:11
【问题描述】:
我在 Java 8 (1.8.0_77) 和 Java 9 (Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)) 中尝试了一些代码
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("eee", Locale.GERMAN);
DayOfWeek mo = dtf.parse("Mo", DayOfWeek::from);
System.out.println("mo = " + mo);
我对这些类的细节不太熟悉,但在 Java 8 中可以打印:
月 = 星期一
在 Java 9 中,但是它失败了
线程“主”java.time.format.DateTimeParseException 中的异常:无法在索引 0 处解析文本“Mo” 在 java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1988) 在 java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1890) 在 day.main(day.java:10)
任何想法,这可以重现吗?
所以,在格式化时: 使用此代码:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("eee", Locale.GERMAN);
String format = dtf.format(DayOfWeek.MONDAY);
System.out.println("format = " + format);
jdk1.8.0-77:
格式 = 莫
jdk-9(构建 9+181)
格式 = 月。
【问题讨论】:
-
ideone.com/6t60j1你确定java-8吗?
-
@Tom 您误解了 javadoc。 “eee”是格式样式的文本缩写(不像“ccc”那样独立)。
-
我承认 OPs 代码适用于 Java 8 (1.8.0_131)。
-
您是否尝试过使用“Mo”的第一个代码。在 Java 9 中?那样有用吗?如果是,那么缩写似乎已更改?
-
@Tom:是的,“Mo”。它适用于 JDK 9。无论如何,这似乎是一个突破性的变化。好吧,或者也许有一些标准来规定“莫”。是正确的版本,所以被改变了......
标签: java java-8 java-time java-9