Spring Boot 选择实体类中属性的日期格式

6rqinv9w  于 2023-03-23  发布在  Spring
关注(0)|答案(3)|浏览(147)

我使用的是Spring Data Jpa,我想要一个annontation来弥补属性上的不足,以选择date的格式。我找了一些annotation,但没有找到任何东西。我想要这样的东西:

@Entity 
public class User(){

......(format dd/mm/aa)
private Date birthDay;
}

谢谢。

ou6hu8tu

ou6hu8tu1#

您可以使用Springorg.springframework.format.annotation.DateTimeFormat,它有几种日期格式。
在实体中指定birthDay属性

@Entity 
public class User(){

@DateTimeFormat(pattern="dd/MM/yyyy")
private Date birthDay;
}
kmb7vmvb

kmb7vmvb2#

为了说明在存储到数据库时需要什么样的模式,可以使用@DateTimeFormat注解。

@Entity 
public class User {

    @DateTimeFormat("dd/MM/yyyy")
    private Date birthDay; 
}

有很多标准格式,或者您可以设置自己的自定义格式。
DateTimeFormatter.class

e5njpo68

e5njpo683#

我相信@DateTimeFormat与日期(时间)如何存储在数据库中无关-它与@RequestParam结合使用来解析HttpRequest参数。像这样:

@GetMapping("/getbybirthdate")
    public ResponseEntity<Page<Client>> getClientByBirthdate(@RequestParam int page, @RequestParam int size, @RequestParam  @DateTimeFormat(pattern = "dd.MM.yyyy") LocalDate birthdate) {
        return ResponseEntity.ok().body(clientService.getClientsByBirthdate(page,  size, birthdate));
    }

如果你试图Mapjava.util包中的日期/时间类型,那么@Temporal是正确的选择。如果你试图Mapjava.time类型,那么除了@Basic或@Column之外,不需要显式指定任何Map注解(这是Baeldung建议的-但我相信Map不需要@Basic或@Column,它们只需要它们的额外属性)
但是,如果问题是在将字符串值解析为日期-时间时出现的,那么对于java.time类型,请使用

LocalDate.parse("2017-11-15")
LocalTime.parse("15:30:18")
LocalDateTime.parse("2017-11-15T08:22:12")
Instant.parse("2017-11-15T08:22:12Z")

或对于ISO以外的格式,请使用DateTimeFormatter类:

LocalDate.from(DateTimeFormatter.ISO_LOCAL_DATE.parse("2018-03-09"))

对于java.util类型:

new SimpleDateFormat("yyyy-MM-dd").parse("2017-11-15")
new SimpleDateFormat("HH:mm:ss").parse("15:30:14")
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse("2017-11-15 15:30:14.332")

相关问题