语言环境的 Java 日期格式tl;博士java.time关于 java.time

2022-09-02 10:00:41

我怎样才能找到给定的 ?DateFormatLocale


答案 1
DateFormat.getDateInstance(int,Locale)

例如:

import static java.text.DateFormat.*;

DateFormat f = getDateInstance(SHORT, Locale.ENGLISH);

然后,您可以使用此对象来格式化 s:Date

String d = f.format(new Date());

如果你真的想知道底层模式(例如),那么,因为你会得到一个对象:yyyy-MMM-ddSimpleDateFormat

SimpleDateFormat sf = (SimpleDateFormat) f;
String p1 = sf.toPattern();
String p2 = sf.toLocalizedPattern();

答案 2

tl;博士

DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL )
                 .withLocale( Locale.CANADA_FRENCH );

java.time

原来的日期时间类现在是遗留的,并且已被java.time类所取代。

DateTimeFormatter 有一种简单的方法,可以在生成字符串来表示日期时间值时通过 Locale 自动本地化。指定 FormatStyle 以指示输出长度(缩写或不缩写)。

DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL );
f = f.withLocale( Locale.CANADA_FRENCH );

获取当前时刻。请注意,和时区之间没有任何关系。一个决定演示,另一个调整到特定的挂钟时间。因此,您可以在新西兰有一个日语时区,或者在这种情况下,印度的时区,其演示文稿的格式设置为魁北克人阅读。LocaleLocale

ZoneId z = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zdt = ZonedDateTime.now( z );

使用该本地化格式化程序对象生成字符串。

String output = zdt.format( f );

关于 java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧日期时间类,如java.util.DateCalendarSimpleDateFormat

Joda-Time 项目现在处于维护模式,建议迁移到 java.time 类。

要了解更多信息,请参阅 Oracle 教程。搜索 Stack Overflow 以获取许多示例和解释。规格是JSR 310

从哪里获取 java.time 类?

ThreeTen-Extra 项目通过其他类扩展了 java.time。这个项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuarter