相关疑难解决方法(0)

具有德语语言环境的SimpleDateFormat - Java 8与Java 10+

我在遗留应用程序中有代码和测试用例,可归纳如下:

@Test
public void testParseDate() throws ParseException {
    String toParse = "Mo Aug 18 11:25:26 MESZ +0200 2014";
    String pattern = "EEE MMM dd HH:mm:ss z Z yyyy";

    DateFormat dateFormatter = new SimpleDateFormat(pattern, Locale.GERMANY);
    Date date = dateFormatter.parse(toParse);

    //skipped assumptions
}
Run Code Online (Sandbox Code Playgroud)

该测试通过Java 8及以下版本.然而,随着Java 10向上,这导致了一个java.text.ParseException: Unparseable date: "Mo Aug 18 11:25:26 MESZ +0200 2014".

备案:另外de_DE,异常也抛出了语言环境 de_CH,de_AT,de_LU.

我知道使用JDK 9(JEP 252)更改了日期格式.但是,我认为这是破坏向后兼容性的颠覆性变化.摘录:

在JDK 9中,Unicode Consortium的公共区域设置数据存储库(CLDR)数据作为默认区域设置数据启用,因此您可以使用标准区域设置数据而无需任何进一步操作.

在JDK …

java simpledateformat java-8 java-9 java-10

49
推荐指数
1
解决办法
2700
查看次数

7
推荐指数
2
解决办法
9702
查看次数