Java/Android绝对最快的周期性获取当前秒(059)和/或毫秒(0999)的方式
我每100毫秒在一个Android应用程序中执行一个Runnable
,用Java ScheduledExecutorService
包装。作为run()
块的一部分,我需要获得当前秒数为0-59,毫秒数为0-999。两者都应该在当地时间,尽管UTC也是可行的
什么是绝对最快的方法?不需要国际化/独特的日历
目前,我正在以下面的方式使用^{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);
共 (0) 个答案