0

所以我正在使用 java、hibernate 和 mysql (spring mvc) 开始一个新项目。

在数据库级别,我应该使用什么列类型?

在 java 级别,我相信我应该使用 Joda 时间。

我的用户表将存储他们的时间偏移量,然后我将使用数据库中的 UTC 值在 UI 级别对其进行转换/格式化。

使用hibernate,我真的需要那个joda time hibernate插件还是添加joda time就足够了?

有人能告诉我我需要什么方法,或者一篇用源代码讨论事情的文章吗?

4

2 回答 2

0

我认为您可以将数据库中的列定义为TIMESTAMPTimeStamp并使用对象在 Hibernate 中映射。

在 Java 端使用SimpleDateFormat获取日期时间字符串,UTC如下所示:

    DateFormat formatter = new SimpleDateFormat("MM/DD/yyyy hh:mm a");
    formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date date = new Date(timeStamp.getTime());  
    String dateString = formatter.format(date);
    System.out.println(dateString);
于 2012-11-07T15:05:33.177 回答
0

在数据库级别,您可以使用日期时间或时间戳(在 MySQL 中)作为列类型。在 Java 中,您应该使用 java.sql.Timestamp。

乔达时间是可能的,但不是绝对必要的。

您可以将数据库时间值存储为 UTC 或本地时间。我强烈建议您使用 UTC。在 jdbc 连接字符串(即在 hibernate.cfg.xml 中)中,您可以定义日期是 UTC 还是本地时间,如果需要,JDBC 会进行时区转换(UTC 或本地时间以外的其他时区不能在 JDBC 级别定义,如果使用会很麻烦)。

这样做后,您不需要特殊的时区转换方法,除了 Java 类 Calendar、Timezone 和 DateFormat 之外。

于 2012-11-07T15:42:42.690 回答