JPA中的时间类型失去上午/下午

时间:2014-10-10 15:26:37

标签: java jpa temporal

根据我的阅读,在JPA中处理日期时,您可以选择3种类型的TemportalType。他们是:

DATE
          Map as java.sql.Date
TIME
          Map as java.sql.Time
TIMESTAMP
          Map as java.sql.Timestamp

我使用TIMESTAMP作为示例,它会像我这样持续我的日期:2014-10-10 02:12:39

我注意到的是,我的日期已经失去上午/下午。假设我的日期作为字符串2014-10-10 02:12:39 PM进入,它将保存为2014-10-10 02:12:39。当我去访问它时,它将是AM而不是PM,因为我的日期格式为MMM dd, yyyy HH:mm:ss a

我应该使用哪种TemporalType将AM / PM信息保存在数据库中?

2 个答案:

答案 0 :(得分:1)

AM / PM / 24H只是日期的格式。在java Date中,Calendar等将日期存储为long,其中包含自01.01.1970 00:00:00以来的毫秒数。

当我在JPA实体中存储日期时,我通常使用Calendar接口并使用TemporalType.TIMESTAMP注释该字段(这将保留hh:mm:ss信息):

@Temporal( TemporalType.TIMESTAMP )
privete Calendar lastUpdated;

总结:您无法在数据库中保留AM / PM信息,因为这是依赖于区域设置的。例如在我的国家,我们使用24H格式的日期,而你显然使用12H + AM / PM。为了正确显示日期,您应该使用与用户的区域设置相对应的格式。

答案 1 :(得分:0)

嗯......不可能失去"上午/下午 - 也许您应该了解实际情况:http://en.wikipedia.org/wiki/12-hour_clockhttp://en.wikipedia.org/wiki/24-hour_clock

您只需要按照您希望的方式格式化您的时间/日期:https://stackoverflow.com/a/18734471/351861