我无法理解DecimalStyle如何影响DateTimeFormatter的格式化/解析。
如果我尝试:

date = LocalDateTime.now();
DecimalStyle ds = DecimalStyle.of(Locale.GERMAN);
formatter = DateTimeFormatter.ofPattern("yyyy").withDecimalStyle(ds.withDecimalSeparator('?'));
text = formatter.format(date);
System.out.println("DecimalStyle: " + text);

我不应该在输出中得到类似:2.016的内容吗?
我实际上看到的是,无论我为ds设置的参数如何,它都不会影响实际格式化的String。
这是Java 8 API,因此不幸的是,在Internet上找不到很多东西。

最佳答案

DecimalStyle影响0(零),+(正),-(负)和.(十进制分隔符)字符的表示方式。 2016中没有小数字符(可能有千位分隔符,但DecimalStyle无法处理该字符)。

一个显示差异的示例:

LocalDateTime date = LocalDateTime.now();
DecimalStyle ds = DecimalStyle.of(Locale.GERMAN);
DateTimeFormatter noDs = DateTimeFormatter.ISO_LOCAL_TIME;
DateTimeFormatter withDs = DateTimeFormatter.ISO_LOCAL_TIME.withDecimalStyle(ds);
System.out.println("Default: " + noDs.format(date));    // Default: 17:44:54.457
System.out.println("German:  " + withDs.format(date));  // German:  17:44:54,457

07-26 08:16