【发布时间】:2019-06-28 06:49:36
【问题描述】:
有没有办法在 Java/Kotlin 中按照语言环境正确的顺序来格式化日期和月份(以紧凑的形式)而不是年份?所以对于英语应该是“Sep 20”,但对于瑞典语应该是“20 sep.”。
作为比较,在 Cocoa 平台上,我可以执行以下操作(在 Swift 中):
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "sv_SE")
formatter.setLocalizedDateFormatFromTemplate("MMM d")
print(formatter.string(from: Date()))
这将正确地扭转局面。 Java SDK 是否有类似的事情?我一直在尝试使用DateTimeFormatter 和较旧的SimpleTimeFormat API 的各种形式,但没有成功。
注意:与this question 不同,我不想要包含年份的完整中等格式。我也不想要DateTimeFormatter.ofPattern("MMM d"),因为这会在瑞典语中给出不正确的结果,或者DateTimeFormatter.ofPattern("d MMM"),因为这会在英语中给出不正确的结果。
【问题讨论】:
-
@Mark No,即包括年份,即完整的日期格式
-
仅供参考,Java 确实提供了
MonthDay类来表示没有年份的月份和日期。不幸的是,java.time 的自动本地化功能目前还没有扩展到这个特定的类,我们称之为DateTimeFormatter.ofLocalized…。
标签: java localization date-formatting