DateTimeFormatterjava.time中的类提供了三种ofLocalized…生成字符串的方法,以表示包含一年的值.例如,ofLocalizedDate.
Locale l = Locale.US ;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.SHORT ).withLocale( l );
LocalDate today = LocalDate.now( ZoneId.of( "America/Chicago" ) );
String output = today.format( f );
Run Code Online (Sandbox Code Playgroud)
对于我看过的语言环境,年份只是较短FormatStyle样式的两位数.
如何让java.time本地化却迫使年份变为四位数而不是两位数?
我怀疑答案在DateTimeFormatterBuilder课堂上.但我找不到任何改变一年的长度的功能.我也仔细阅读了Java 9源代码,但是不能很好地解释代码以找到答案.
这个问题类似于:
...但是这些问题针对的是现在由java.time类取代的旧日期时间框架.
我有以下 Java 代码。
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
String expiryDateInString = "05/14/86";
final Instant expiryDate = dateFormat.parse((expiryDateInString)).toInstant();
Run Code Online (Sandbox Code Playgroud)
我希望这会导致解析异常,但我得到的年份被解析为 0086,我相信这已经是过去的事了。我怎样才能使年份成为严格的 4 位数年份,而其他任何年份都会例外。