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

时间:2012-12-10 19:02:30

标签: java android

我每隔100毫秒在Java Runnable中执行一个Android应用程序中的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);

1 个答案:

答案 0 :(得分:6)

你不会比System.currentTimeMillis()更快地找到任何

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