ZonedDateTime 本地化

ZonedDateTime localization

我需要根据后面得到的locale输出ZonedDateTime。有什么方法可以将 ZonedDateTime 值转换为所需格式?

ZonedDateTime creationDate=ZonedDateTime.now();
//convert creationDate depending on the existing locale

ZonedDateTime 没有 格式。 ZonedDateTime 的概念是 format-less.

格式化程序是它们自己的对象(DateTimeFormatter 的实例)。它们是可配置的(例如,您可以更改它们的区域设置,然后它们所做的所有 locale-specific 呈现,例如 long-form 月份名称,都会更改),并且您可以要求它们格式化提供的 zoneddatetime .

因此,随时随地创建您的 zoneddatetime 对象,将其存储在您想要的任何位置。如果 3 天后,您需要根据您刚刚获得的某些语言环境对其进行格式化,那很好。那就这样做:

ZonedDateTime zdt = ZonedDateTime.now();
// days pass

DateTimeFormatter dtf = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).localizedBy(Locale.FRENCH);

System.out.println(dtf.format(zdt));