我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);