【问题标题】:Saving date in GMT format using Joda-time - Java使用 Joda-time 以 GMT 格式保存日期 - Java
【发布时间】:2014-02-14 00:31:15
【问题描述】:

我使用以下代码从我的 Spring MVC/Hibernate 应用程序中收集日期:

String startMembershipDate = request.getParameter("startmembershipdate");

我在我的实体中为该字段使用以下字段定义

@Column(name="MEMBERSHIP_DATE", nullable=false, unique=false)
private Date membershipDate;

所以我想知道是否有人可以提供一个示例,说明如何使用 Joda-time 将 JSP 中收到的日期转换为 GMT 格式?

我还应该将字段定义从日期更改为日期时间吗?时间戳?

【问题讨论】:

    标签: java spring hibernate jsp


    【解决方案1】:

    查看这个问题如何在DateDateTime 之间进行转换:Convert from java.util.date to JodaTime

    这个问题告诉你如何使用 GMT 格式化 DateTimeJodaTime DateTime, ISO8601 GMT date format

    如果需要,您可以将字段定义更改为 DateTime。你只需要编写一个自定义的 Hibernate 映射器。我们在这里这样做并且效果很好(特别是因为我们将日期保存为DECIMAL(16),所以我们不会因为奇怪的 SQL DATE 实现、驱动程序错误......而出现愚蠢的错误。

    java.sql.Timestamp 是另一回事。它源自java.util.Date,仅添加了纳秒的概念——它引入了一些您需要注意的新细节。在我的代码中,我远离它。

    但除非你有充分的理由(比如发现你一直转换为 DateTime),否则别管它。

    【讨论】:

    • 我的原因是我有一个应用程序有来自世界各地的用户,每个人都有自己的时区和时间格式,所以在阅读了很多与这个问题相关的 SO 文章后,我注意到每个人建议将服务器上保存的日期格式统一为 GMT 格式,然后根据每个用户的本地日期格式格式化视图...如果我在这里遵循错误的方法,请纠正我?我不确定如何使用 Date 在 DB 中保留 GMT,但读到 Joda 非常容易
    • 附加信息:使用 UTC(不是 GMT)来存储数据。您可以通过调用getMillis() 来获取要保存的值。如果要显示数据,请使用毫秒值加上目标时区。
    • 很抱歉,您能详细说明 getMillis() 部分吗?你的意思是在数据库中以毫秒格式保存日期/时间,然后检索它并将其从毫秒转换为日期/时间再次给用户?
    • @MChan RE:以不同格式显示日期时间……是的。 Joda-Time 提供标准 ISO 8601 格式、其他内置格式、区域设置敏感格式,您可以定义自己的格式。在 StackOverflow 中搜索“joda 格式”以获取许多示例。
    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    相关资源
    最近更新 更多