3 回答
TA贡献1827条经验 获得超9个赞
当您知道时,这是微不足道的。一个模式字母,例如dor M,将接受一位或两位数字(或年份最多 9 位数字)。
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("d.M.u");
System.out.println(LocalDate.parse("02.05.2019", dateFormatter));
System.out.println(LocalDate.parse("3.5.2019", dateFormatter));
System.out.println(LocalDate.parse("4.05.2019", dateFormatter));
System.out.println(LocalDate.parse("06.5.2019", dateFormatter));
System.out.println(LocalDate.parse("15.12.2019", dateFormatter));
输出:
2019-05-02
2019-05-03
2019-05-04
2019-05-06
2019-12-15
我在文档中搜索了这些信息,但没有轻易找到。我不认为它有据可查。
TA贡献1909条经验 获得超7个赞
您可以使用这样的自定义格式创建 DateTimeFormatter
DateTimeFormatter.ofPattern("d.M.yyyy")
然后,如果日期和月份提供 1 位或 2 位数字,则您可以解析日期。
String input = "02.5.2019";
LocalDate date = LocalDate.parse(input, DateTimeFormatter.ofPattern("d.M.yyyy"));
我在这里使用了新的 java.time 包中的 LocalDate,所以我假设您的 Java 版本是最新的。
TA贡献1876条经验 获得超7个赞
您建议的日期格式应该有效——就像这个测试一样:
@Test
public void test() throws ParseException {
SimpleDateFormat f = new SimpleDateFormat("d.M.yyyy");
f.parse("7.8.2019");
f.parse("07.08.2019");
f.parse("007.008.002019");
}
相比之下,DateTimeFormatter 不接受年份的前导零,但日和月的前导零不是问题:
@Test
public void test2() throws ParseException {
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
DateTimeFormatter f = builder.appendPattern("d.M.yyyy").toFormatter();
f.parse("7.8.2019");
f.parse("07.08.2019");
f.parse("007.008.2019");
}
添加回答
举报