区域设置的Java日期格式

时间:2009-08-27 07:09:34

标签: java date format locale

如何找到给定DateFormat的{​​{1}}?

2 个答案:

答案 0 :(得分:25)

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();

答案 1 :(得分:2)

TL;博士

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

java.time

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

生成表示日期时间值的字符串时,DateTimeFormatterLocale自动本地化的简单方法。指定FormatStyle以指示输出长度(缩写与否)。

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

获取当前时刻。请注意,Locale和时区彼此无关。一个确定演示,另一个调整为特定wall-clock time。因此,您可以在新西兰拥有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及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?

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