Scala Deadline.time 未提供创建 Deadline 对象时设置的持续时间



我正在使用如下所示的 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

最新更新