关于java:从数据库读取时间戳比GMT时间晚4小时。 但是存储为GMT

Reading timestamp from database is 4 hours later than GMT time. But was stored as GMT

我的代码说明了一切。 简单的问题,但我似乎无法弄清楚如何正确读取此时间戳:

1
2
3
4
Calendar now = Calendar.getInstance(TimeZone.getTimeZone("GMT"));

//later, this code gets executed, and the"now" calendar object is the value:
insert into mytable (mydate) values(?)

当我从这张桌子上读到时,我得到了一张时间戳。 为什么时间戳是4小时后?

当然,这是我住的地方与GMT的偏差,但时间戳只是一个数字。 我认为,由于我的日历位于GMT区域,因此其时间戳将作为GMT时间插入。

1
Timestamp mydate = rs.getTimestamp("mydate");

我看到Timestamp包装了Date对象。 我从数据库中读取它后包装的日期对象被划分为我的时区(不是GMT)。 我不确定如何将其转换回GMT,或者是否有办法直接将其作为GMT阅读。


找到我需要的东西:

1
2
3
java.util.Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("GMT"));
Timestamp mydate = rs.getTimestamp("mydate", cal);