gpt4 book ai didi

Java如何以秒为单位获取currentMillis和过去时间戳之间的差异

转载 作者:行者123 更新时间:2023-11-29 05:22:21 24 4
gpt4 key购买 nike

假设我有长 currentMillis 和长 oldMillis。两个时间戳之间的差异非常小,总是小于 1 秒。

如果我想知道以毫秒为单位的时间戳之间的差异,我可以执行以下操作:

长差=currentmillis-oldmillis;

如果我想将差值转换为秒,我可以将它除以 1000。但是,如果以毫秒为单位的差值小于 1000 毫秒(<1 秒),则除以 1000 将得到 0。

如果差异小于一秒,我如何获得两个时间戳之间的差异?例如,如果差异为 500 毫秒,则所需输出为 0.5 秒。

出于某种我不明白的原因,使用 float/double 而不是 long 总是返回 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 方法以较小的随机时间间隔随机调用。

最佳答案

听起来您只需要在除法之前将结果转换为 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,这将强制使用 float 来完成算术运算:

double differenceSeconds = (currentMillis - oldMillis) / 1000.0;

关于Java如何以秒为单位获取currentMillis和过去时间戳之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24168492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com