【发布时间】:2020-08-12 10:58:10
【问题描述】:
我的目标是使用 LocalDateTime 并显示恰好包含 3 个字母的月份。
对于英语来说,这很容易:
val englishFormatter = DateTimeFormatter.ofPattern("MMM", Locale.ENGLISH)
for (month in 1..12) {
println(LocalDateTime.of(0, month, 1, 0, 0)
.format(englishFormatter))
}
结果如预期:
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
对于德语(如上,仅使用Locale.GERMAN),结果出乎意料:
Jan. Feb. März Apr. Mai Juni Juli Aug. Sep. Okt. Nov. Dez.
虽然缩写在德语中都很常见,但“März”、“Juni”和“Juli”并未缩短(“Mai”不需要缩短)。此外,大多数月份包含超过 3 个字母(注意点!)
有没有办法缩短这两个?
例如
März ⇒ Mrz.
六月 ⇒ 六月。
七月⇒七月。
顺便说一句:代码在 Kotlin 中,但 Kotlin 使用的是 Java 的 LocalDateTime。因此标记为 Java
编辑:我在 Android 7.0 上运行此代码
【问题讨论】:
-
你必须做类似this的事情。
-
作为替代方案,您可以提取
LocalDateTime的Month并通过month.getDisplayName(TextStyle.SHORT, Locale.GERMAN)找到所需的缩写... -
我用 java 测试了你的代码,它是正确的。我认为这不是 java 的问题。
-
这是 3 字符 abb 的已知问题。使用
MMM和 Java 中的任何日期时间格式化 API(旧版或新版)的月份名称。可能你错过了检查stackoverflow.com/questions/1635681/…