springboot中Date类型与LocalDateTime的日期处理

6次阅读

共计 1151 个字符,预计需要花费 3 分钟才能阅读完成。

LocalDateTime 的时间操作比 Date 操作方便的多

@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
private Date birthDay;    // 如果使用 Date 这种时间类型加上 @JsonFormat 这个注解就可以了
//@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime sendDate;

1.Date:@JsonFormat 这个注解是双向的, 前端传的 birthDay 必须是和 pattern 相匹配的字符串, 如 1999-01-02 11:22:40, 还可以传 1999-1-2 11:22:40
2.LocalDateTime: 使用这个注解不行, 必须进行配置:
1. 加入一个 bean, 使用了 LocalDateTime 的字段都会遵循这个规则进行序列化和反序列化

@Bean
public ObjectMapper serializingObjectMapper() {JavaTimeModule module = new JavaTimeModule();
    LocalDateTimeDeserializer localDateTimeDeserializer = new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    module.addDeserializer(LocalDateTime.class, localDateTimeDeserializer);
    ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json()
            .modules(module)
            .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
            .build();
    return objectMapper;
}
2. 加入依赖

    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>2.9.8</version>
    </dependency>
</dependencies>

注意!使用 LocalDateTime 的字段, 前端传过来进行匹配时必须按照规则完全匹配, 如 1999-01-02 11:22:40(可以),1999-1-2 11:22:40(报错)

正文完
 0