转载

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

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(报错)

原文  https://segmentfault.com/a/1190000019866844
正文到此结束
Loading...