我正在使用如下所示的 Deadline 对象。
scala> val d1 = Duration.create(10, "seconds").fromNow
d1: scala.concurrent.duration.Deadline = Deadline(1048157612536608 nanoseconds)
当我尝试打印我设置的时间(在本例中为 10 秒(时,它打印了一些不正确的时间。
scala> d1.time
res0: scala.concurrent.duration.FiniteDuration = 1048157612536608 nanoseconds
scala> d1.time.toSeconds
res1: Long = 1048157
从创建同一对象时设置的 Deadline 对象获取时间的正确方法是什么?
截止日期不应该以这种方式使用。它基本上是System.nanoTime
的包装器,可以轻松添加Duration
值。
System.nanoTime
不打算用作时钟。它旨在用于计算时差。
如果您按预期使用Deadline
,您可以看到它,即产生时差的东西:
// diff on _rounded_ values
10.seconds.fromNow.time.toSeconds - Deadline.now.time.toSeconds // 10L
// diff on _actual_ values - by the time we start calculating `-` it should be less than 10s
10.seconds.fromNow - Deadline.now // 9999991191 nanoseconds