如何使用 Java 计算每分钟完成的操作?

How do I calculate actions done per minute with Java?

我正在编写一个自己的应用程序来帮助 RuneScape 3 流媒体通过 DPS 旋转显示来教育他们的观众,我想实现一个功能 A.K.A APM(这意味着每分钟的操作数)这是换句话说,一分钟内按下的键数(热键),我在 atm 上做的是,线程启动时有一个 LocalTime,每 5 秒它应该显示 APM,但我想我的公式是正确。

当前公式为:
LocalTime apm = Main.keysPressed.size() / (LocalTime.now().minus(Main.apmLocalTime);

这是: 计数器/(current_time - start_time)

问题是,.minus() 要求 TemporalUnit 作为参数,我迷路了。

谁能帮我得到公式。

tl;博士

actionsCount / Duration.between( start , Instant.now() ).toMinutes()

java.time.Instant

使用 Instant 跟踪时刻,而不是 LocalTime

Instant 表示一个时刻,时间轴上的一个点,如 UTC 中所示。 class解析为纳秒,但当前的传统硬件时钟将捕获当前时刻限制为微秒或毫秒。

LocalTime class 仅表示一天中的时间,没有日期和时区或与 UTC 的偏移量。所以这个class不能代表一个时刻

为了方便使用 Duration class,并使您的代码更加自文档化。

Instant start = Instant.now() ;
…
Duration elapsed = Duration.between( start , Instant.now() ) ;
long minutesElapsed = elapsed.toMinutes() ;  // Get a count of whole minutes in total span of time. 
long actionsPerMinute = ( actionsCount / minutesElapsed ) ;

提示:虽然通常在 Java 中我们希望使用更通用的接口和超级 classes 而不是更具体的 classes,但在 java.time 正好相反。在 java.time 中,我们想使用具体的 classes,因为框架程序员在文档中告诉我们了。因此,如果您的 IDE 或编译器建议使用 Temporal,例如,请按照 Java 文档查看实现 classes 的列表,例如 Instant