tl;dr
LocalDate.parse( "2011-12-15" )
.format(
DateTimeFormatter.ofLocalizedDate( FormatStyle.LONG )
.withLocale(
new Locale( "en" , "IN" )
)
)
15 December 2011
java.time
已接受的答案是正确的(月份大写MM
),但现在有了更好的方法。令人困扰的旧日期时间类现在已经过时,被java.time类取代。
您的输入字符串采用标准ISO 8601格式。因此,在解析时不需要指定格式模式。
LocalDate ld = LocalDate.parse( "2011-12-15" ); // Parses standard ISO 8601 format by default.
Locale l = new Locale( "en" , "IN" ) ; // English in India.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.LONG )
.withLocale( l );
String output = ld.format( f );
转储到控制台。
System.out.println( "ld.toString(): " + ld );
System.out.println( "output: " + output );
ld.toString(): 2011-12-15
output: 15 December 2011
请查看IdeOne.com上的实时代码。
关于 java.time
java.time 框架是内置于 Java 8 及更高版本中的。这些类替代了老旧的遗留日期时间类,例如 java.util.Date
、Calendar
和 SimpleDateFormat
。
Joda-Time项目现在处于维护模式,建议迁移到java.time类。
了解更多信息,请参见Oracle教程。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
您可以直接与数据库交换java.time对象。使用符合JDBC 4.2或更高版本的JDBC驱动程序。无需字符串,无需java.sql.*
类。
如何获取java.time类?
ThreeTen-Extra项目通过添加额外的类扩展了java.time。该项目是java.time可能未来添加的潜在试验场。您可能会在这里找到一些有用的类,例如Interval
, YearWeek
, YearQuarter
, 以及更多。