当前位置: 首页 > 面试题库 >

在java.time中的`DateTimeFormatter.ofLocalized…`生成的本地化字符串中强制使用4位数字年份

南宫星波
2023-03-14
问题内容

DateTimeFormatterjava.time中的类提供了三种ofLocalized…方法来生成字符串来表示包括年份的值。例如,ofLocalizedDate

Locale l = Locale.US ; 
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.SHORT ).withLocale( l );
LocalDate today = LocalDate.now( ZoneId.of( "America/Chicago" ) );
String output = today.format( f );

对于我所见的语言环境,较短的FormatStyle样式中的年份仅是两位数。

如何让java.time本地化却 强制年份为四位数 而不是两位?

我怀疑答案在DateTimeFormatterBuilder课堂上。但是我找不到改变年份长度的任何功能。我还细读了Java
9源代码
,但是无法充分理解该代码以找到答案。

…但是这些问题针对的是java.time类所取代的较旧的日期时间框架。


问题答案:

没有所需的内置方法。但是,您可以应用以下解决方法:

Locale locale = Locale.ENGLISH;
String shortPattern =
    DateTimeFormatterBuilder.getLocalizedDateTimePattern(
        FormatStyle.SHORT,
        null,
        IsoChronology.INSTANCE,
        locale
    );
System.out.println(shortPattern); // M/d/yy
if (shortPattern.contains("yy") && !shortPattern.contains("yyy")) {
    shortPattern = shortPattern.replace("yy", "yyyy");
}
System.out.println(shortPattern); // M/d/yyyy

DateTimeFormatter shortStyleFormatter = DateTimeFormatter.ofPattern(shortPattern, locale);
LocalDate today = LocalDate.now(ZoneId.of("America/Chicago"));
String output = today.format(shortStyleFormatter);
System.out.println(output); // 11/29/2016


 类似资料:
  • 问题内容: 我想使用带有格式“ yyyymmdd”的simpleDateFormat验证和解析日期,这还允许将100624解析为10年(朱利叶斯·塞萨尔去世后54年)。日期也将是1970年左右,所以我不想使用SimpleDateFornat(“ yymmdd”)解决。 我想知道是否有一种方法可以使用SimpleDateFormat强制采用四位数的年份格式?我即将进行正则表达式测试,但是也许有一种使

  • 问题内容: 当尝试取一个整数并将其前缀为“ b”并将其转换为字符串时,出现此错误: 与此功能有关: 问题答案: name = ‘b’ + str(num) 要么 如S.Lott所述,Python 3及更高版本不建议使用混合运算符’%’。我从INTERCAL那里窃取了“混合”这个名称,但这就是我谈论它的方式,并希望至少在印刷品上看到它一次(就像渡渡鸟一样),它从地球表面消失了。

  • 每个 Mvc 框架都有自己的本地化字符串的解决方案, Nutz.Mvc 的这个是相当简陋的。 我只是个人觉得足够用了。下面我把它简单介绍一下: 假定所有的本地化字符串文件都会存放在某一目录下 这个目录下所有的 .properties 文件,将作为默认的本地字符串文件。 每一种语言都会是一个目录,目录名称对应一个 Locale 的 toString(),请参看 java.util.Locale 的

  • 我有一个这样的收藏: 以及包含此集合的itemtype: 那么,在这个项目类型中插入衬衫的合适ImpEx应该是什么: 上面的陈述给出了错误。我哪里做错了?

  • 问题内容: 我正在寻找实现以下目标的方法: 我可以自己编写它,但是在我看来,我曾经看过一个执行此操作的库,可能是slf4j记录器,但是我不想编写日志消息。我只想生成字符串。 您知道这是哪个图书馆吗? 问题答案: 参见方法。

  • 我正在用C#开发一个加密用户和管理员密码的类项目。为了加密,我使用了< code > triplescryptoserviceprovider 。 在配置应用程序中,用户输入用于加密和解密密码的密钥。我想有一个按钮来生成密钥来帮助用户,但我不知道如何随机生成128位。如何生成128位的密钥?