所以我正在使用休眠并使用管理时间的应用程序。在 24 小时制中处理时间的最佳方法是什么?
在此应用程序开始时我不需要担心 TimeZone 问题,但最好确保在开始时内置此功能。
我也在使用hibernate,仅供参考
将它们存储为 ts = System.currentTimeMillis()。该格式实际上是时区安全的,因为它以 UTC 格式返回时间。
如果您只需要时间部分,好吧,我不知道 Hib 中的内置类型,但是编写自己的类型 Time24 很简单——只需实现 org.hibernate.UserType 或 org.hibernate.CompositeUserType (load=nullSafeGet和 store=nullSafeSet 方法)。
请参阅http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-types-custom
但无论如何,我仍然会节省绝对时间。将来可能会有所帮助。
PS这一切都假设存储日期出于某种原因是不可能的。Date 中的 TimeZone 有时会妨碍您,真的。;)
我建议您考虑使用 Joda,http://joda-time.sourceforge.net/,它提供了比核心日期和日历实现更直观和可控的时间处理功能。JSR 310 实际上是在 Java 7 中包含一个新的时间 API 的提议,该 API 将主要基于 Joda。Joda 还提供了依赖于时区的时间处理和独立于时区的时间处理,这可以减轻处理间隔时的困难。
使用 java.util.Date 有什么问题吗?
java.util.Date
应该使用;不是很长(而且绝对不是Calendar
)。
如果您使用注释,请务必使用@Temporal
我最近还发现了另一个似乎是对 JODA 的响应的库。 http://www.date4j.net/
优点列在项目主页上。