栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SimpleDateFormat toPattern在Java 9中的行为有所不同

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SimpleDateFormat toPattern在Java 9中的行为有所不同

    System.setProperty("java.locale.providers", "COMPAT,CLDR");    DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, new Locale("sv", "SE"));    System.out.println(((SimpleDateFormat) dateFormat).toPattern());

在我的jdk-9.0.4上运行此打印

yyyy-MM-dd

您可能想

-D
在命令行上使用属性设置,它不会有任何区别。

在Java
9中,来自Unipre联盟的通用语言环境数据存储库(CLDR)被用作语言环境数据的默认源,而在早期的Java版本中则不是这种情况。如上所述设置系统属性将启用Java
8行为。正如nullpointer在评论中所说,您可以在此处阅读更多内容:默认情况下使用CLDR Locale
Data


罗勒·布尔克(Basil Bourque)的评论是正确的,习惯上将小写缩写用于语言,因此您可能应该指定

sv
以确保不会混淆读者。

可能还会想知道

y
模式中是否有一个或四个是否有任何区别。我阅读
SimpleDateFormat
文档的方式是,
y
将按照80-20规则来解释两位数的年份:它是在过去80年内或在接下来的20年之内。
yyyy
将两位数字的年份解释为公元一世纪的一年。
。假设您的年份在4位数范围(1000到9999)之间,那么我认为这不是问题。

如果这仅适用于瑞典语言环境,则该代码的现代版本将给出相同的结果:

DateTimeFormatterBuilder.getLocalizedDateTimePattern(        FormatStyle.SHORT, null, IsoChronology.INSTANCE, new Locale("SV", "SE")));

然而,对于一些语言环境(

en-CY
塞浦路斯例如,英语)的结果不同
DateFormat
DateTimeFormatter
,所以如果你的目标是最大的向后兼容性,坚持使用过时的
DateFormat
类。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509705.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号