簡體   English   中英

Java如何在幾秒鍾內獲得currentMillis和過去時間戳之間的差異

[英]Java How to get the difference between currentMillis and a timestamp in the past in seconds

讓我們說我有很長的潮流米莉斯和長老的米利斯。 兩個時間戳之間的差異非常小,總是小於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,這將強制使用浮點運算:

double differenceSeconds = (currentMillis - oldMillis) / 1000.0;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM