【问题标题】:Date Format Converter Approach日期格式转换器方法
【发布时间】:2017-01-16 13:44:42
【问题描述】:

我的 UI 中的日期采用 dd/mm/yyyy 格式。 DB 中的日期为 yyyy-mm-dd 格式。 我需要在 UI 和数据库之间来回转换日期。

DTO 和实体日期的类型为 java.util.Date。 我正在使用 spring 的 BeanUtils.copyProperties(source, destination),来来回设置 dto 和 entity 的属性。

我有以下解决方案: 1.实现JPA AttributeConverter 2. 使用自定义 Java 注解 3. 使用简单的日期格式转换器实用程序类。 日期格式转换器的最佳方法是什么。

我的技术栈是:

  1. jQuery
  2. JDK 7
  3. 春天 4
  4. JPA

【问题讨论】:

  • "数据库中的日期是 yyyy-mm-dd 格式" - 为什么您的数据库使用字符串来表示日期?大多数数据库都有日期类型...我建议您使用它,此时您可以坚持使用特定于域的类型,而不是转换为特定格式。
  • 我们使用的是sql server,它只是日期格式,但数据类型是日期。
  • 如果数据库中的数据类型是Date,那么您不应该将其作为文本处理- 将其作为日期处理。见PreparedStatement.setDate等。
  • 您在数据库中有 DATE,并且您将 java.util.Date / java.sql.Date 字段保存到其中。格式化与该过程完全无关。格式仅与您的 GUI 相关
  • 我们使用 jpa 进行 CRUD 操作。从 ui 以 dd/mm/yyyy 格式发送日期时,未保存日期。但以 yyyy-mm-dd 格式发送时会保存。

标签: java spring jpa


【解决方案1】:

使用对象,而不是字符串

无需操作日期时间值字符串。而是使用日期时间对象。对象没有“格式”。

您说日期值确实以SQL DATE 类型存储在数据库中。因此,如果在JDBC 4.2 或更高版本中,您应该将其作为java.time.LocalDate 对象检索到Java 中,或者如果在早期JDBC 中,则作为java.sql.DATE 检索。

搜索 Stack Overflow 以了解如何在您的技术堆栈中使用这些对象类型。这已被多次报道过。

【讨论】:

    【解决方案2】:

    JPA 应该自动转换日期。要格式化它以用于显示目的,请使用:

    String formattedDate = new SimpleDateFormat("dd/mm/yyyy").format(date);
    

    【讨论】:

      猜你喜欢
      • 2014-09-22
      • 1970-01-01
      • 2020-11-24
      • 2017-12-23
      相关资源
      最近更新 更多