1 回答
TA贡献1813条经验 获得超2个赞
LocalDate // Modern class for representing a date-only value without time-of-day and without time zone.
.parse(
"1/23/40" ,
DateTimeFormatter.ofPattern( "M/d/uu" ) // Defaults to century 20xx.
) // Returns a `LocalDate` object.
.toString() // Generate text in standard ISO 8601 format.
2040-01-23
指定默认世纪
该类SimpleDateFormat
有一个设置,用于在解析具有两位数世纪的输入字符串时假定哪个世纪:SimpleDateFormat::set2DigitYearStart
。
但是......你应该停止使用这个类。
java.time
该类SimpleDateFormat
是与最早版本的 Java 捆绑在一起的糟糕的日期时间类的一部分。这些类现在已成为遗留类,完全被 JSR 310 中定义的现代java.time类所取代。
LocalDate
该类LocalDate
表示仅日期值,没有时间、时区或相对于 UTC 的偏移量。
➥ 此类解析具有两位数年份的输入字符串,始终使用 20xx 世纪。
String input = "1/23/40" ; DateTimeFormatter f = DateTimeFormatter.ofPattern( "M/d/uu" ) ; LocalDate localDate = LocalDate.parse( input , f ) ;
localDate.toString(): 2040-01-23
提示:我发现在商业应用程序中使用 2 位数年份非常麻烦。日期和月份的含糊性很容易造成误解和沟通不畅。我建议始终使用 4 位数年份。
当跨文化共享数据时,这个问题更加严重。
添加回答
举报