正在将用户时区日期转换为UTC,正在写入转换器



我有一个Action类作为:

public class Action implements Serializable {
    private Integer actionID;
    private Integer actionStatus;
    private User    user;
    private Date    actionDueDate;
 }

我正在使用hibernate来存储Action。用户在自己的时区中选择actionDueDate

  1. 我希望在将用户时区转换为UTC后,将Action's actionDueDate转换为UTC。请建议我怎么做。我很乐意编写自己的转换,但不知道Hibernate是否可以自动处理,或者是否有其他更好的方法。我的数据库是MySQL。

  2. 有没有一种方法可以指定对象属性初始化的顺序在Java/HHibernate中?因为如果我正在编写自己的转换器,我需要在actionDueDate之前初始化User属性。

java.util.Date不携带任何时区信息;它本质上是一个围绕getTime()返回的long的薄包装器。将actionDueDate更改为Long,并将其保持不变。

或者使用Joda Time并将actionDueDate更改为org.Joda.Time.DateTime,确实带有时区,并使用Joda contrib与Hibernate 3.x集成或使用usertype项目与Hibernate 4集成。

您可以在java中使用国际化概念,在那里我们可以获得本地时间等。

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

相关内容

  • 没有找到相关文章

最新更新