[英]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.