Java ResultSet 如何获取 UTC 时间时间戳

2022-09-03 17:04:03

数据库具有 UTC 格式的数据,当我尝试获取数据时

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

这有什么问题吗?


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

这应该可以解决问题!


答案 2

您的 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所述的“如果它们有名称” - 有关名称的信息,请参阅此帖子)。


推荐