0

我有一Action堂课:

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

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

  1. Action's actionDueDate在将用户时区转换为 UTC 后,我希望将其转换为 UTC。请建议我如何做到这一点。我很高兴编写自己的转换,但想知道 Hibernate 是否可以自动处理它,或者是否有其他更好的方法。我的数据库是 MySQL。

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

4

3 回答 3

1

java.util.Date 不携带任何时区信息;它本质上是对 getTime() 返回的 long 的薄包装。将 actionDueDate 更改为 Long 并坚持下去。

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

于 2013-06-26T00:15:36.970 回答
0

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

于 2013-06-26T05:21:10.987 回答
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
于 2013-06-26T22:07:13.963 回答