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

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

我尝试在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.版本

相依性:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

代码:

第一个

型号:

@NotEmpty(message = "dob {emptyDateValidationMsg}")
@IsValidDateFormat(message = "dob {dateFormatValidationMsg}")
@JsonProperty("dob")
private String dob;

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

tvokkenx

tvokkenx1#

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

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

相关问题