Java的如何获得过去在几秒钟currentMillis和时间戳之间的差异(Java How to

2019-10-20 06:31发布

可以说我有很长currentMillis和长oldMillis。 在两个时间戳之间的差别是非常微小的,总是不到1秒。

如果我想知道在milleseconds时间戳之间的差别,我可以做到以下几点:

长差= currentmillis-oldmillis;

如果我想差转换为秒,我可以由1000划分它。然而,如果以毫秒为差小于1000毫秒(<1秒),将其除以1000将产生0。

我怎样才能获得两个时间戳之间的差值,如果差值小于第二? 例如,如果该差为500毫秒,所期望的输出是0.5秒。

使用浮点/双,而不是长总是返回由于某种原因,我不明白0.0。

我的代码:

private long oldmillis = 0, difference = 0;

private long calculateDifference()
{
 long currentMillis = System.currentTimeMillis();

        if (oldMillis == 0) oldMillis = currentMillis;
        difference = currentMillis - oldMillis;
        oldMillis = currentMillis;

return difference;
}

该方法calculateDifference与小的随机时间间隔随机地调用。

Answer 1:

这听起来像你只需要结果转换为double之前

// This will work
double differenceMillis = currentMillis - oldMillis;
double differenceSeconds = differenceMillis / 1000;

// This will *not* work
double differenceSecondsBroken = (currentMillis - oldMillis) / 1000;

在后者的代码,分割使用执行整数运算,所以你为0的结果,然后将其转换为一个最终double

该会的工作另一种方法是由1000.0分,这将迫使使用浮点来完成算术:

double differenceSeconds = (currentMillis - oldMillis) / 1000.0;


文章来源: Java How to get the difference between currentMillis and a timestamp in the past in seconds