Java (11) 中将给定时间戳(例如 System.currentTimeMillis())四舍五入到最接近 10 秒的最有效方法是什么?
例如 12:55:11 将是 12:55:10 而 12:55:16 将是 12:55:20
这段代码每秒执行约 10-20 次,因此它必须是高效的。
有任何想法吗?谢谢
大概是这样的:
long time = System.currentTimeMillis();
long roundedTime = (time + 5_000) / 10_000 * 10_000;
Run Code Online (Sandbox Code Playgroud)
基本上是 3 x 64 位原始算术运算。
(如果您想截断到 10 秒的粒度,只需删除+ 5_000.)
理论上我们应该考虑整数溢出。在实践中,上面的代码在接下来的大约 2.92 亿年里应该没问题。(来源:维基百科。)