【发布时间】:2017-09-20 13:34:22
【问题描述】:
自 epoc 以来我有一个 unix 时间,以毫秒为单位,例如:1505913038295
我需要把它分成两部分。所以我可以使用 Java Instant 类方法。
Instant ofEpochSecond(long epochSecond, long nanoAdjustment)
自纪元以来的秒数(我能做到) long secondsSince1970 = 毫秒Since1970 / 1000;
-
我需要帮助。我需要取毫秒的余数,比如 295,(第一个问题:我如何获得余数)然后将其转换为纳秒,然后获取当前的 System.nanoTime() 并将其添加到 nano raminder。
2017 年 9 月 20 日星期三 13:21:33 + [nano + nono 中的剩余 mili] [自 epoc 以来的秒数] + [nano + nono 中自 epoc 以来的毫秒数]
然后希望我可以调用 Instant.ofEpochSecond,类似这样。
Instant convertedTimestamp = Instant.ofEpochSecond(secondsSince1970, remaindingNanoTime % 1000000000L);
我希望这是有道理的。
【问题讨论】:
-
有什么用?你想用这个做什么?您可能还想阅读
System.nanoTime()的文档。 -
如果我理解正确,你需要的是
Instant.ofEpochMilli(1505913038295L).plusNanos(System.nanoTime())。是吗? -
试试这个:
Instant.ofEpochSecond(millis / 1000, millis % 1000 * 1000_000L); -
@UsagiMiyamoto 问题说
System.nanoTime()必须添加到 nanos 值。不知道为什么 OP 想要这样做,但这就是我的理解 -
这听起来像XY Problem,你真正想要达到什么目的?我在问,因为
System.nanoTime()不是 当前时间的纳米部分。如果您试图将当前时间精确到纳秒,那么您需要具有该精度的Clock,这是一个完全不同的问题。还是你用错了方法,当你真正需要使用ofEpochMilli()时尝试使用ofEpochSecond()?
标签: java datetime java-time java.time.instant