我有一个Action
课程:
public class Action implements Serializable {
private Integer actionID;
private Integer actionStatus;
private User user;
private Date actionDueDate;
}
我正在使用hibernate来存储Action
。用户在他自己的时区中选择actionDueDate
。
我想在将用户时区转换为UTC后将Action's
actionDueDate
转换为UTC。
请建议我怎么做。
我很乐意编写自己的转换,但想知道Hibernate是否可以自动处理,或者是否还有其他更好的方法。
我的数据库是MySQL。
有没有办法可以指定对象属性初始化的顺序
在Java / Hibernate中?因为如果我正在编写自己的转换器,我需要在User
之前初始化actionDueDate
属性。
答案 0 :(得分:1)
java.util.Date不携带任何时区信息;它实际上是一个围绕getTime()返回的long的瘦包装器。将actionDueDate更改为Long并将其保留为。
或者使用Joda-Time并将actionDueDate更改为 带有时区的org.joda.time.DateTime,并使用joda-contrib与Hibernate 3.x或usertype project用于与Hibernate 4集成。
答案 1 :(得分:0)
您可以在java中使用Internationalization Concept,我们可以获取本地时间等。
答案 2 :(得分:0)
SimpleDateFormat dateFormatUTC = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
dateFormatUTC.setTimeZone(TimeZone.getTimeZone("UTC"));
SimpleDateFormat dateFormatlocal = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
dateFormatlocal.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
Date localDate=new Date();
Date atUTC = dateFormatlocal.parse(dateFormatUTC.format(localDate));
System.out.println("@Local: "+localDate.toString());
System.out.println("@UTC: "+atUTC.toString());
这也可以节省夏令时。 你怎么想。
输出:
@Local: Thu Jun 27 08:45:32 EST 2013
@UTC: Thu Jun 27 15:45:32 EST 2013