【发布时间】:2015-05-18 16:12:21
【问题描述】:
当您尝试超出可能范围的日期时,Java DateTimeFormatter 会引发异常,例如:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("M/d/yyyy");
String dateString = "12/32/2015";
LocalDate ld = LocalDate.parse(dateString, dtf);
将抛出:
Exception in thread "main" java.time.format.DateTimeParseException: Text '12/32/2015' could not be parsed: Invalid value for DayOfMonth (valid values 1 - 28/31): 32
但是当我输入一个无效的日历日期时,根据他们的标准,它在语法上仍然是可能的,它会自动将其更正为有效日期,例如:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("M/d/yyyy");
String dateString = "2/31/2015";
LocalDate ld = LocalDate.parse(dateString, dtf);
它成功解析但自动更正为2015-02-28。我不希望这种行为,我希望它在日期不是有效的日历日期时仍然抛出异常。有没有我可以设置的内置选项来实现这一点,还是我真的必须尝试手动筛选出这些实例?
【问题讨论】:
标签: java parsing date formatting java-time