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