【问题标题】:Is timestamp an utc time? How to get utc time in java and convert to local time (millis)?时间戳是UTC时间吗?如何在java中获取UTC时间并转换为本地时间(毫秒)?
【发布时间】:2015-12-16 12:32:58
【问题描述】:

TIMESTAMP 是 UTC 时间吗? 如何在java中获取UTC时间并转换为本地时间(毫秒)?

【问题讨论】:

  • 您是否尝试过阅读文档?你做了什么研究?
  • 我发现 System.currentTimeMillis() 是当地时间,但是我发现获取 utc 时间的代码有点……长(我的意思是……不是一行代码),所以我只是想知道我应该使用当地时间还是 UTC 时间作为时间戳……更好?
  • 哪个时间戳?一个数据库TIMESTAMP,一个java.sql.Timestamp,还有别的吗?

标签: java time timestamp utc


【解决方案1】:

您可以将时间戳对象转换为本地时间:

object.toLocalDateTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());

https://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html#toLocalDateTime--

【讨论】:

    【解决方案2】:

    使用这个

    Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
    System.out.println(cal.getTime());
    

    使用 SimpleDateFormatter 将其转换为本地时间(毫秒)。

    【讨论】:

      【解决方案3】:

      好吧,我刚刚找到了一种获取UTC时间的方法,它有效,但我不知道这是否是一个好方法。

      Calendar cal = Calendar.getInstance();
      int zoneOffset = cal.get(Calendar.ZONE_OFFSET);
      int dstOffset = cal.get(Calendar.DST_OFFSET);
      cal.add(Calendar.MILLISECOND, -(zoneOffset + dstOffset));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-25
        • 2011-02-06
        • 2012-09-11
        • 2019-08-15
        • 2020-06-04
        • 1970-01-01
        • 2019-03-09
        • 1970-01-01
        相关资源
        最近更新 更多