数据库中的数据采用UTC时区,当我尝试获取数据时
java.util.Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
java.sql.Timestamp ts = resultSet.getTimestamp(PUBLISH_TIME);
cal.setTime(ts);
这个有什么问题吗?
数据库中的数据采用UTC时区,当我尝试获取数据时
java.util.Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
java.sql.Timestamp ts = resultSet.getTimestamp(PUBLISH_TIME);
cal.setTime(ts);
这个有什么问题吗?
java.util.Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
java.sql.Timestamp ts = resultSet.getTimestamp(PUBLISH_TIME, cal);
这应该能解决问题!
resultset.updateTimestamp(column, mili)
先执行,那么执行resultset.getTimestamp(time, cal)
会抛出异常java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
。我已经为此问题苦恼了一段时间。 - Weishi ZsetTimeZone
方法,代码如下:java.util.Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
- Tim Nieradzik您的DateFormat实例很可能是以本地时间显示值。在显示值时,请尝试以下操作:
java.util.Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
java.sql.Timestamp ts = resultSet.getTimestamp(PUBLISH_TIME);
cal.setTime(ts);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss z");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(sdf.format(cal.getTime()));
编辑:针对您的评论:
如果我使用GMT,SimpleDateFormat会有问题吗?
SimpleDateFormat 可以使用一般时区 (GMT +/- n)、RFC822 和文本(“如果它们有名称” 正如 JavaDoc 所述 - 请参见此帖子了解名称信息)。