【问题标题】:SpringBoot2 @DateTimeFormat annotation with LocalDateTime doesn't work as i expected带有 LocalDateTime 的 SpringBoot2 @DateTimeFormat 注释不能按我的预期工作
【发布时间】:2019-12-18 01:25:12
【问题描述】:

我想用@DateTimeFormatLocalDateTime 转换为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 类型是什么以及使用哪个数据库?

标签: java


【解决方案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}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 2017-01-08
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      相关资源
      最近更新 更多