问题描述
我需要根据稍后获得的语言环境输出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));