DateTimeFormatter 支持单位数字的月份日期和年份月份

新手上路,请多包涵

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 许可协议

阅读 851
1 个回答

文档中

Number :如果字母数为 1,则使用最小位数输出值且不进行填充。

所以你想要的格式说明符是 M/d/yyyy ,使用单字母形式。当然,它仍然会正确解析日期 String s like "12/30/1969" 对于这些日/月值,两位数是“最小位数”。

The important difference is that MM and dd require zero padding, not that M and d can’t handle values greater than 9 (那会有点……不寻常)。

原文由 Holger 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题