【问题标题】:Convert java.sql.Timestamp to local timezone将 java.sql.Timestamp 转换为本地时区
【发布时间】:2013-05-26 18:23:30
【问题描述】:

我正在从时间戳 mysql 数据库列中检索结果。我需要将这些结果转换为我的本地时区。Timestamp timestamp = rs.getTimestamp("mytimestamp");

【问题讨论】:

标签: java mysql timestamp


【解决方案1】:

我认为这可能有效:

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());

我相信它们都是基于时代的。

【讨论】:

    【解决方案2】:

    java.sql.Timestamp 就像 java.util.Date 一样,它扩展自 1970 年 1 月 1 日 00:00:00 GMT 以来的时间,唯一的区别是它还拥有 nanos(请参阅 API)。它不依赖于时区,您不能将其转换为本地时区。

    【讨论】:

      【解决方案3】:

      java.sql.Timestampobjects 没有时区 - 它们就像 java.util.Date. 但是,您可以在 TimeZone 中显示时间,例如

       Calendar localTime = Calendar.getInstance(TimeZone.getDefault());
       localTime .setTimeInMillis(timeStamp.getTime());
      

      【讨论】:

      • 不幸的是,时间戳确实有区域(继承自 java.util.Date),具体取决于使用的构造函数。一些 JDBC 驱动程序仍然使用不推荐使用的构造函数,在这种情况下选择本地时区。请参阅docjar.com/html/api/java/util/Date.java.html(第 252 行)
      • @Jonathan , Date 和 Timestamp 都没有时区,尽管它们在某种程度上与 UTC 相关。早在 1997 年初,Java 1.1 中就已弃用 javadoc 中有关它们具有时区的任何提示。您的评论指的是这种已弃用的方法。请注意,在 Date 中没有 getTimeZone 方法,就像在 Calendar 中一样。
      猜你喜欢
      • 2012-06-27
      • 1970-01-01
      • 2013-01-27
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 2014-08-12
      相关资源
      最近更新 更多