代码之家  ›  专栏  ›  技术社区  ›  kal

如何在UTC中获取时间戳

  •  11
  • kal  · 技术社区  · 15 年前

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

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

    这有什么问题吗?

    2 回复  |  直到 9 年前
        1
  •  6
  •   Community CDub    8 年前

    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()));
    

    编辑:对您的评论:

    如果我使用格林威治标准时间,这会是simpledateformat的问题吗?

    SimpleDateFormat 可以使用常规时区(GMT+/-N), RFC822 ,和文本(“如果它们有名称”,如javadoc所述)-请参见 this post 有关姓名的信息)。

        2
  •  28
  •   sth    15 年前
    java.util.Calendar cal = Calendar.getInstance(); 
    cal.setTimeZone(TimeZone.getTimeZone("UTC")); 
    java.sql.Timestamp ts = resultSet.getTimestamp(PUBLISH_TIME, cal); 
    

    这应该会成功的!