带有 LocalDateTime 的 SpringBoot2 @DateTimeFormat 注释不能按我的预期工作
Posted
技术标签:
【中文标题】带有 LocalDateTime 的 SpringBoot2 @DateTimeFormat 注释不能按我的预期工作【英文标题】:SpringBoot2 @DateTimeFormat annotation with LocalDateTime doesn't work as i expected 【发布时间】:2019-12-18 01:25:12 【问题描述】:我想用@DateTimeFormat
将LocalDateTime
转换为YYYY-MM-DD HH:mm:ss
格式。
以下是我的源代码。
实体类@Entity // JPA Annotation
@Setter // Lombok Annotations
@Getter
public class CustomModel
@DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
private LocalDateTime addDate;
@DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
private LocalDateTime lastModifyDate;
控制器类
...
CustomModel customModel = new CustomModel();
customModel.setAddDate(LocalDateTime.now());
customModel.setLastModifyDate(LocalDateTime.now());
...
以下是结果。
在上图中,我预计是“2019-08-11 03:08:56”。
但结果格式是 '2019-08-11 03:08:56.814944'。
怎么了??
【问题讨论】:
能否分享一下您在数据库中用于此 add_date 列的列类型? 哪里有问题?? (您的帖子(代码)中没有单个字符串(格式模式除外)) 它关于数据库列类型,您的 add_date 类型是什么以及使用哪个数据库? 【参考方案1】:您可以使用 DateTimeFormatter 类。但是要转换,您需要日期的字符串表示形式。然后解析它。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
customModel.setAddDate(LocalDateTime.parse(LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME)), formatter);
customModel.setLastModifyDate(LocalDateTime.parse(LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME)), formatter);
【讨论】:
【参考方案2】:你没有放百里香模板,但是@DateTimeFormat
注解只有在你使用双括号而不是单括号时才会被考虑,即$model.addDate
而不是$model.addDate
。
【讨论】:
以上是关于带有 LocalDateTime 的 SpringBoot2 @DateTimeFormat 注释不能按我的预期工作的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 1.4:LocalDateTime 映射到 varbinary 而不是时间戳类型
在 Spring Boot 和 ElasticSearch 中使用 Instant、LocalDateTime 和 ZonedDateTime
spring-rest接口LocalDateTime转时间戳
spring-rest接口LocalDateTime转时间戳