Java ResultSet如何以UTC格式获取TimeStamp

数据库包含UTC数据,当我尝试获取数据时

java.util.Calendar cal = Calendar.getInstance(); cal.setTimeZone(TimeZone.getTimeZone("UTC")); java.sql.Timestamp ts = resultSet.getTimestamp(PUBLISH_TIME); cal.setTime(ts); 

这有什么不对吗?

您的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状态 – 请参阅此post以获取有关名称的信息)。

 java.util.Calendar cal = Calendar.getInstance(); cal.setTimeZone(TimeZone.getTimeZone("UTC")); java.sql.Timestamp ts = resultSet.getTimestamp(PUBLISH_TIME, cal); 

这应该做的伎俩!