“dd/MM/yyyy”格式无法在Spring Boot 时验证年份

vbopmzt1  于 2022-11-05  发布在  Spring
关注(0)|答案(1)|浏览(121)

我尝试在Sping Boot 中使用自定义验证来验证日期。但是唯一的X1 M0 N1 X没有验证年份,尽管X1 M1 N1 X和X1 M2 N1 X工作正常。
例如,
如果在RequestBody中我将日期格式传递为
02/1k/2022已正确验证,k2/12/2022也已正确验证,但当我通过日期(如02/12/2k22)时,未验证。
我想不出来。
SpringBoot版本:2.3.0.版本

相依性:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-validation</artifactId>
  4. </dependency>

代码:

第一个

型号:

  1. @NotEmpty(message = "dob {emptyDateValidationMsg}")
  2. @IsValidDateFormat(message = "dob {dateFormatValidationMsg}")
  3. @JsonProperty("dob")
  4. private String dob;

请指出我犯了什么错误...
如果我传递的是dateformatyyyy-MM-dd而不是dd/MM/yyyy,则相同的代码可以正确验证年份

tvokkenx

tvokkenx1#

如果您使用SimpleDateFormat.parse,则会出现一些缺陷,即“* 该方法可能不会使用给定字符串的整个文本 *"。您可以在javadoc DateFormat中找到这些缺陷
我建议您可以使用DateTimeFormatter & LocalDate.parse来代替。

  1. try {
  2. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
  3. LocalDate.parse(arg0, formatter);
  4. } catch (DateTimeParseException e) {
  5. return false;
  6. }

相关问题