1

Runnable每 100 毫秒在一个 Android 应用程序中执行一个 Java ScheduledExecutorService。作为run()块的一部分,我需要获取当前秒为 0-59 和毫秒为 0-999。两者都应该是当地时间,尽管 UTC 也是可行的。

绝对最快的方法是什么?不需要国际化/唯一日历。

目前我正在使用Calendar以下方式,但我认为它可以更快地使用System.currentTimeMillis()并进行一些数学运算,我将不胜感激任何输入。

Calendar calendar = Calendar.getInstance();
int seconds = calendar.get(Calendar.SECOND);

如果它是相关的,这实际上是在一个 Android 应用程序中。

编辑澄清

将当前秒数设为 0-59(即相对于当前分钟数)是至关重要的,因此System.currentTimeMillis()会带来我上面提到的数学成本。我不确定的是,做这个数学 + 系统调用是否会比调用更快Calendar,或者是否有任何其他选项(如Joda Time)可能占用更少的空间。

作为参考,下面是我能想到的从 Unix 时间戳中获取秒 (0-59) 的最直接方法。

double seconds = Math.floor(((Math.floor(System.currentTimeMillis() / 1000) % 86400) % 3600) % 60);
4

1 回答 1

6

你不会找到.System.currentTimeMillis()

也就是说,快速和正确不一定齐头并进。一如既往:考虑使用Joda Time。如果没有库,您将无法正确处理所有边缘情况。

于 2012-12-10T19:03:34.253 回答