区域设置的Java日期格式

如何找到给定LocaleDateFormat

 DateFormat.getDateInstance(int,Locale) 

例如:

 import static java.text.DateFormat.*; DateFormat f = getDateInstance(SHORT, Locale.ENGLISH); 

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

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

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

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

TL;博士

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

java.time

原始日期时间类现在已经遗留下来并且已被java.time类取代。

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

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

获取当前时刻。 请注意, Locale和时区彼此无关。 一个确定演示,另一个调整为特定的挂钟时间 。 因此,您可以在新西兰拥有一个日语Locale ,或者在这种情况下是印度的时区,其格式为Québécois人阅读。

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

使用该本地化格式化程序对象生成String。

 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类?

  • Java SE 8Java SE 9及更高版本
    • 内置。
    • 带有捆绑实现的标准Java API的一部分。
    • Java 9增加了一些小function和修复。
  • Java SE 6Java SE 7
    • 许多java.timefunction都被反向移植到ThreeTen-Backport中的 Java 6和7。
  • Android的
    • ThreeTenABP项目特别适用于Android的ThreeTen-Backport (如上所述)。
    • 请参见如何使用ThreeTenABP ….

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