2017-12-18 359 views
2

Instant有方法:转换瞬间从大纪元微秒

  • toEpochMilli这个瞬间从1970-01-01T00时代转换为毫秒数:00:00Z
  • getEpochSecond其中从1970-01-01T00的Java时代获得秒数:00:00Z

这两种方法都失去了精度,在toEpochMilli的JavaDoc我看到:

如果这个瞬间比精确到毫秒时,则转换 删除任何多余的精度的信息,但在纳秒 的数额需由一百万整数除法。

我没有看到相应的方法来获得更精确的时间戳。 如何从Java 8中的时代获得微或纳米数量?

回答

7

使用getNano连同getEpochSeconds

getNano 

获取纳秒的数量,沿时间线后,从第二的开始。 纳秒秒值用于测量由getEpochSecond返回的秒数的总纳秒数。

+2

好答案。除'getNano()'外,我建议您使用'TimeUnit'来进行转换,并决定是否需要溢出检测。一方面,“Instant.MIN”和“Instant.MAX”的微秒不适合“长”,另一方面,“长”对于“即时”在过去或未来相当远。 –