java - JSR310 如何国际化月日模式?

标签 java localization date-formatting java-time jsr310

我正在尝试格式化没有年份的日期(只有日和月,例如 12.10)

DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT) 对我来说仍然是年份 (12.10.20)。

所以我尝试了 DateTimeFormatter.ofPattern("dd.MM") 但显然 硬编码顺序和点,这不会让美国用户满意。(他们期望斜杠和第一个月)

如何国际化一个模式?分隔符等是否有一些抽象语法?

最佳答案

好吧,正如 Ole 所指出的,仅使用 java.time 没有 100% 令人满意的解决方案。但是我的图书馆Time4J已经找到基于CLDR仓库数据的解决方案(ICU4J也给予支持)使用类型AnnualDate (作为 MonthDay 的替代品):

LocalDate yourLocalDate = ...;
MonthDay md = MonthDay.from(yourLocalDate);
AnnualDate ad = AnnualDate.from(md);

ChronoFormatter<AnnualDate> usStyle =
  ChronoFormatter.ofStyle(DisplayMode.SHORT, Locale.US, AnnualDate.chronology());
ChronoFormatter<AnnualDate> germanStyle =
  ChronoFormatter.ofStyle(DisplayMode.SHORT, Locale.GERMANY, AnnualDate.chronology());
System.out.println("US-format: " + usStyle.format(ad)); // US-format: 12/31
System.out.println("German: " + germanStyle.format(ad)); // German: 31.12.

关于java - JSR310 如何国际化月日模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60896781/

相关文章:

java - 关于MediaPlayer.setDatasource(URL)的查询;

java - 如何在 Java/Android 的格式化字符串中显示本地化的日期单位?

asp.net - Telerik RadDatePicker 没有选择 2030 年后的日期

Oracle 插入时间戳 - AM/A.M.或下午/下午必需的

java - 构建 SessionFactory 时出现 NullPointerException

java - Spring框架支持什么版本的stomp

使用范围而非容器的 Java JTwig For 循环

PHP 本地化最佳实践?获取文本?

ios - 如何为双长度 PseudoLanguage 提供应用内设置

swift - 一周的第一天日期延期