如何将长整型时间(currentTimeInMillis)转换为UTC时间戳?

6

我的客户正在发送给我一个可以被认为是长整型的数据。

scala> System.currentTimeMillis
res3: Long = 1441056836609

scala> 

如何将其转换为UTC时间戳?

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


可能是将时间戳转换为UTC时区的重复问题。 - childofsoong
4个回答

11

你可以使用Instant类的方法。

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

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

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


1
Date dateFromTime = new Date(timeInMillis);

那会得到一个日期对象,你可以使用正确的UTC格式输出它。
DateFormat dateFormatter = SimpleDateFormat(/*UTC Format String*/, Locale./*Your Locale here*/);
System.out.printf("%s\n", dateFormatter.format(dateFromTime));

鉴于OP明确表示他们正在使用Java 8,为什么你要推荐一个非常古老的API呢? - Boris the Spider
2
如果您认为有更好的解决方案,可以提出您自己的建议。 - Xirema
2
@BoristheSpider:据我所知,Date类(和Calendar类)尚未被弃用。在我看来,有些问题使用早期的类解决同样优雅...如果您了解它们的限制,那么就真的没有问题了。 - scottb

1

由于您正在使用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

0

这是我正在做的事情

我正在使用Joda-Time并进行操作

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

client 上我看到它是这样的

Wed, 02 Sep 2015 20:57:34 GMT

而在服务器上,我看到它是这样的

2015-09-02T20:24:43.594Z

附言:不要比较值,它们被复制的方式不同,我想分享的是格式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接