How can I find the DateFormat
for a given Locale
?
Answer 1:
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();
Answer 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 );
获得当前时刻。 请注意, Locale
和时区无关彼此。 一者来确定演示,其他调整到特定的挂钟时间 。 所以,你可以在新西兰的时区与Locale
日的,或者在这种情况下格式化的魁北克人在印度的时区与演示阅读。
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.Date
, Calendar
,和SimpleDateFormat
。
该乔达-时间的项目,现在在维护模式 ,建议迁移到java.time类。
要了解更多信息,请参阅甲骨文教程 。 和搜索堆栈溢出了很多例子和解释。 规范是JSR 310 。
从哪里获取java.time类?
- 的Java SE 8 , Java SE的9 ,后来
- 内置。
- 具有捆绑实现标准Java API的一部分。
- Java的9增加了一些小的功能和修复。
- Java SE 6中和Java SE 7中
- 多的java.time功能后移植到Java 6和7在ThreeTen-反向移植 。
- Android的
- 所述ThreeTenABP项目适应于Android ThreeTen-反向移植 (上面提到的)特异性。
- 请参阅如何使用ThreeTenABP ... 。
该ThreeTen-额外项目与其他类扩展java.time。 该项目是为将来可能增加的java.time试验场。 您可以在这里找到一些有用的类,比如Interval
, YearWeek
, YearQuarter
,和更多 。
文章来源: Java Date Format for Locale