【问题标题】:How to I convert long (currentTimeInMillis) to UTC timestamp?如何将 long (currentTimeInMillis) 转换为 UTC 时间戳?
【发布时间】:2015-11-26 00:43:11
【问题描述】:

我的客户给我发了Long,这可以被认为是

scala> System.currentTimeMillis
res3: Long = 1441056836609

scala> 

如何将其转换为UTCtimeStamp?

在服务器上,我们使用Java 8

【问题讨论】:

标签: java scala time utc


【解决方案1】:

您可以使用Instant 类方法。

import java.time.Instant;
import java.time.ZoneOffset;

Instant.ofEpochMilli(<yourmillis>).atOffset(ZoneOffset.UTC).toString();

您的示例日期是"2015-08-31T21:33:56.609Z"

【讨论】:

    【解决方案2】:
    Date dateFromTime = new Date(timeInMillis);
    

    这将获得一个 Date 对象,然后您可以使用正确的 UTC 格式输出该对象

    DateFormat dateFormatter = SimpleDateFormat(/*UTC Format String*/, Locale./*Your Locale here*/);
    System.out.printf("%s\n", dateFormatter.format(dateFromTime));
    

    【讨论】:

    • 鉴于 OP 特别说他们正在使用 Java 8,为什么您推荐一个绝对古老的 API??
    • 如果您认为自己有更好的解决方案,可以提出自己的解决方案。
    • @BoristheSpider:上次我听说,Date 类(和 Calendar 类)还没有被弃用。在我看来,有一些问题在早期的课程中得到了同样优雅的解决......如果你意识到它们的局限性,那么真的没有问题。
    【解决方案3】:

    由于你使用的是scala,我建议你使用scala的方式,nscala-time是一个非常好的库

    scala> import com.github.nscala_time.time.Imports._
    import com.github.nscala_time.time.Imports._
    
    scala> DateTimeZone.setDefault(DateTimeZone.UTC)
    
    scala> new DateTime(1441056836609L)
    res1: org.joda.time.DateTime = 2015-08-31T21:33:56.609Z
    

    【讨论】:

      【解决方案4】:

      这就是我正在做的事情

      我正在使用Joda-Time 并且正在做

      DateTimeZone.setDefault(DateTimeZone.UTC);
      DateTime.now.toString
      

      client 我认为是

      Wed, 02 Sep 2015 20:57:34 GMT
      

      server 我认为它是

      2015-09-02T20:24:43.594Z
      

      P.S.不要比较值,它们是复制的不同,格式是我想分享的

      【讨论】:

        猜你喜欢
        • 2016-06-11
        • 2019-08-15
        • 2015-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-27
        相关资源
        最近更新 更多