使用system.currentTimeMillis()“闪烁”布尔值

时间:2011-04-23 10:11:39

标签: java

为什么这个值总是正确的?我无法弄清楚如何使用每秒“闪烁”的布尔值。

long millis = System.currentTimeMillis();
boolean blink = (Math.floor(millis/1000 + 0.5)==Math.floor(millis/1000));

2 个答案:

答案 0 :(得分:2)

变量millis的类型为long,这是一个整数类型,因此在添加0.5之前,millis/1000会被截断为整数值

更简单的方法可能是:

boolean blink = ((millis / 1000) & 1) == 0;

这会将毫秒值转换为秒(通过除以1000),然后测试最低位以查看它是否为0.

答案 1 :(得分:2)

我就是这样做的

  long millis = System.currentTimeMillis();
  boolean blink = (millis % 2000) < 1000;

这使用模%运算符来确定当前时间重复两秒窗口的距离。然后它会看到它是在窗口的前半部分(0到999)还是在后半部分(1000到1999)。这将导致一个布尔值,每秒都会交替为true和false。