Java/Android绝对最快的方式来定期获取当前秒数(0-59)和/或毫秒数(0-999)

Ale*_*oss 1 java android

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

什么是绝对最快的方法呢?不需要国际化/独特的日历.

目前我正在使用Calendar以下方式,但我认为它可以更快地使用System.currentTimeMillis()和做一些数学,我很感激任何输入.

Calendar calendar = Calendar.getInstance();
int seconds = calendar.get(Calendar.SECOND);
Run Code Online (Sandbox Code Playgroud)

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

编辑以澄清

获得当前秒数为0-59(即相对于当前分钟)是至关重要的,因此System.currentTimeMillis()如上所述,数学成本也是如此.我不确定的是,进行此数学+系统调用是否会比调用更快Calendar,或者是否有任何其他选项(如Joda Time)可能具有更少的占用空间.

作为参考,下面是我最直接的方法,从Unix时间戳得到秒(0-59).

double seconds = Math.floor(((Math.floor(System.currentTimeMillis() / 1000) % 86400) % 3600) % 60);
Run Code Online (Sandbox Code Playgroud)

Mat*_*all 6

你找不到比它更快的东西System.currentTimeMillis().

也就是说,快速和正确并不一定是齐头并进的.一如既往:考虑使用Joda Time.如果没有库,你就无法正确地击中所有边缘情况.