2014-01-23 30 views
0

我用下面的代码收集我的Spring MVC/Hibernate的应用日期:保存日期GMT格式乔达时间 - Java的

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

,我使用以下字段定义在我的实体这一领域

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

所以我想知道,如果有人可以请给我提供有关如何使用乔达时间接收日期转换在JSP为GMT格式的例子吗?

我也应该将字段定义从Date更改为DateTime吗?时间戳?

回答

2

看到这个问题怎么DateDateTime之间的转换:Convert from java.util.date to JodaTime

这个问题告诉你怎样用格式化DateTime GMT:JodaTime DateTime, ISO8601 GMT date format

如果需要你可以改变字段定义DateTime 。你只需要编写一个自定义的Hibernate映射器。我们在这里做到了,它运行良好(特别是因为我们将日期保存为DECIMAL(16),所以我们不会因为奇怪的SQL DATE实现,驱动程序错误等而出现愚蠢的错误)。

java.sql.Timestamp是别的。它来源于java.util.Date,只增加了nano秒的概念 - 它引入了一些您需要注意的新细节。在我的代码中,我远离它。

但是,除非你有一个很好的理由(例如发现你一直转换为DateTime),否则不要管它。

+0

我的理由是,我有一个应用程序,它们拥有来自世界各地的用户,每个用户都有自己的时区和时间格式,因此在阅读了大量有关此问题的SO文章之后,我注意到每个人都建议统一日期格式在服务器上保存为GMT格式,然后根据他/她的当地日期格式为每个用户格式化视图...如果我在这里遵循错误的方法,请纠正我?我不知道如何坚持使用日期格林威治标准时间,但读了Joda – MChan

+0

啊超级简单。重复:http://stackoverflow.com/questions/10834665/how-can-i-handle-time-zones-in-my-webapp –

+1

附加信息:使用UTC(不是GMT)来存储数据。你可以通过调用getMillis()来获得保存的值。如果要显示数据,请使用毫秒值加上目标时区。 –