ZonedDateTime本地化

问题描述

我需要根据稍后获得的语言环境输出zoneddatetime。有什么方法可以将zoneddatetime值转换为所需的格式?

zoneddatetime creationDate=zoneddatetime.Now();
//convert creationDate depending on the existing locale

解决方法

ZonedDateTime没有没有格式。 ZonedDateTime的概念是无格式的。

格式化程序是他们自己的对象(DateTimeFormatter的实例)。它们是可配置的(例如,您可以更改其区域设置,然后它们所做的所有特定于区域设置的呈现方式(例如长格式的月份名称)都将更改),并且您可以要求他们格式化提供的zoneddatetime。

因此,请随时创建zoneddatetime对象,并将其存储在所需的位置。如果三天后,您需要根据您刚刚获得的某种语言环境对其进行格式化,那就太好了。然后这样做:

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

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

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