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
格式来解析月份中的一位和两位数字的日期和月份?
From 文档 http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html:
Number:如果字母数为 1,则使用最少的位数输出该值,并且不进行填充。
所以你想要的格式说明符是M/d/yyyy
,使用单字母形式。当然,它仍然会解析日期String
s like "12/30/1969"
对于这些日/月值,正确的是,两位数是“最小位数”。
重要的区别在于MM
and dd
需要零填充,而不是那个M
and d
无法处理大于 9 的值(这有点……不寻常)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)