gpt4 book ai didi

java - 如何将 am-pm-of-day 格式化为 "AM/PM"而不是 "a.m./p.m."?

转载 作者:行者123 更新时间:2023-12-05 04:37:50 26 4
gpt4 key购买 nike

DateTimeFormatter's API reference似乎错过了正确格式化 am-pm-of-day 的细节,我总是可以使用 String.replace() 但我觉得将选项更改为 AM 和/或下午PM 使用“aaa...”。有办法做到这一点吗?

最佳答案

根据 CLDR 本地化

在格式化日期时间对象的文本表示时,有关大小写和缩写的决定留给本地化规则处理。这些规则被定义为 Locale 的一部分目的。在基于 OpenJDK 项目代码库构建的最新版本的 Java 中,Locale 类从 Common Locale Data Repository (CLDR) 获取其本地化数据。由 Unicode 联盟维护。

所以不,没有办法指定使用“AM”还是“a.m.”除了指定一个 Locale 对象与另一个对象。

ZonedDateTime zdt = ZonedDateTime.now( ZoneId.of( "Asia/Tokyo" ) ) ;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedTime( FormatStyle.MEDIUM ) ;
String outputCaFr = zdt.format( f.withLocale( Locale.CANADA_FRENCH ) ) ;
String outputUkEn = zdt.format( f.withLocale( Locale.UK) ) ;

如果您坚持使用特定格式,则必须自己进行字符串操作。但我建议让 LocaleDateTimeFormatter 和 CLDR 完成本地化工作,而不是硬编码琐碎的格式调整。

请注意,CLDR 以及 LocaleDateTimeFormatter 类都支持亚文化。如果更高层次的文化不符合您的期望,请探索 CLDR 的定义。一种亚文化可能包含您想要的本地化规则选择。

关于java - 如何将 am-pm-of-day 格式化为 "AM/PM"而不是 "a.m./p.m."?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70660150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com