Java的日期格式的语言环境(Java Date Format for Locale)

2019-06-21 03:51发布

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.DateCalendar ,和SimpleDateFormat

该乔达-时间的项目,现在在维护模式 ,建议迁移到java.time类。

要了解更多信息,请参阅甲骨文教程 。 和搜索堆栈溢出了很多例子和解释。 规范是JSR 310 。

从哪里获取java.time类?

  • 的Java SE 8Java 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试验场。 您可以在这里找到一些有用的类,比如IntervalYearWeekYearQuarter ,和更多 。



文章来源: Java Date Format for Locale