DateTimeFormmater
似乎不处理一个月中的个位数日期:
String format = "MM/dd/yyyy";
String date = "5/3/1969";
System.out.println(new SimpleDateFormat(format).parse(date));
System.out.println(LocalDate.parse(date, DateTimeFormatter.ofPattern(format)));
在此示例中, SimpleDateFormat
正确解析日期,但 DateTimeFormatter
抛出异常。如果我使用零填充日期,例如“05/03/1969”,两者都有效。但是,如果某天或某月是个位数,则 DateTimeFormatter
会引发异常。
什么是正确的 DateTimeFormatter
格式来解析一位和两位数的月份和月份?
原文由 Mark Maxey 发布,翻译遵循 CC BY-SA 4.0 许可协议
从 文档中:
所以你想要的格式说明符是
M/d/yyyy
,使用单字母形式。当然,它仍然会正确解析日期String
s like"12/30/1969"
对于这些日/月值,两位数是“最小位数”。The important difference is that
MM
anddd
require zero padding, not thatM
andd
can’t handle values greater than 9 (那会有点……不寻常)。