运行:
Locale locale = Locale.US;
String pattern = DateTimeFormatterBuilder.getLocalizedDateTimePattern(
FormatStyle.LONG,
FormatStyle.LONG,
Chronology.ofLocale(locale),
locale);
System.out.println("pattern: " + pattern);
输出:
pattern: MMMM d, yyyy h:mm:ss a z // Java 8.0.171-oracle
pattern: MMMM d, y 'at' h:mm:ss a z // Java 11.0.0-open
我发现Oracle使用iana-tz数据库(https://data.iana.org/time-zones/tz-link.html)来管理时区数据(请参阅https://www.oracle.com/technetwork/java/javase/tzdata-versions-138805.html)。
但是,我没有发现有关标准日期格式更改的任何信息。在研究源代码时,似乎在Java 8中,函数LocaleResources.getJavaTimeFormatData()
加载了sun.text.resources
捆绑软件,而在Java 11中,它加载了sun.text.resources.cdlr
捆绑软件。
我的问题是: 这样的更改是否记录在某处,可能是有原因的?
此外,确保与现有数据库兼容的最佳方法是什么?现在,我们有一个公认的模式列表,因此我正在考虑通过解析新模式将旧模式添加到我的可识别模式列表中。
另一个值得注意的变化是:
Locale locale = Locale.US;
String pattern = DateTimeFormatterBuilder.getLocalizedDateTimePattern(
FormatStyle.SHORT, FormatStyle.MEDIUM, Chronology.ofLocale(locale), locale);
System.out.println("pattern: " + pattern);
输出:
pattern: M/d/yy h:mm:ss a // Java 8.0.171-oracle
pattern: M/d/yy, h:mm:ss a // Java 11.0.0-open