日期时间对象没有格式
您的评论表明您将日期时间对象与表示其值的字符串混为一谈。
日期时间对象没有格式。对象可以生成字符串来表示它们的值,但是这样的字符串是不同的和独立的。同样,可以通过解析字符串来实例化日期时间对象,但新的日期对象将是不同的和独立的。
本地化
您可以生成一个字符串,如VHS 答案中所示,您可以在其中指定特定格式模式。但通常更好的方法是让 java.time 为您自动本地化。
要本地化,请指定:
FormatStyle
确定字符串的长度或缩写。
Locale
确定 (a) 用于翻译日期名称、月份名称等的人类语言,以及 (b) 决定缩写、大写、标点符号、分隔符等问题的文化规范。
例子:
Locale l = Locale.CANADA_FRENCH ; // Or Locale.US, Locale.ITALY, etc.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL ).withLocale( l );
String output = myLocalDate.format( f );
该DateTimeFormatterBuilder
课程是针对特殊需要的。一般来说,你只需要DateTimeFormatter
上课。
请参阅在 IdeOne.com 上实时运行的示例代码。但要注意 IdeOne.com 网站的 Java 实现的限制:替代语言环境被忽略,硬编码为单一的英语语言环境(可能是 Locale.US)。
DateTimeFormatter formatter = DateTimeFormatter.BASIC_ISO_DATE;
LocalDate localDate = LocalDate.parse("20120403", formatter);
String outputStandard = localDate.toString();
DateTimeFormatter fCanadaFrench =
DateTimeFormatter.ofLocalizedDate( FormatStyle.LONG )
.withLocale( Locale.CANADA_FRENCH ) ;
String outputCanadaFrench = localDate.format( fCanadaFrench ) ;
DateTimeFormatter fUS =
DateTimeFormatter.ofLocalizedDate( FormatStyle.LONG )
.withLocale( Locale.US ) ;
String outputUS = localDate.format( fUS ) ;
localDate.toString(): 2012-04-03
输出加拿大法语:2012 年 4 月 3 日
输出美国:2012 年 4 月 3 日