如何使用 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
。
我正在编写一个自己的应用程序来帮助 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
。