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