2017-07-17 396 views
-7

我想查找給定時間戳和當前系統時間之間的差異。查找兩個時間戳之間的差異

我的代碼,

​​

DIFF我得到的不是我expacting。

Ex。 (1500462813 * 1000)-1500290013000 = 172800000

這是日期1975年6月24日的,上午5時30分〇〇秒 我期待2017年7月19日,下午4點43分33秒。

想要找到當前系統時間和給定時間戳之間的差異,以運行剩餘時間的計時器。

+2

你會得到什麼,你期望什麼? –

+6

兩個時間戳之間的差異不是日期。這是......不同之處。 –

+0

如何找到時間戳的差異? –

回答

2

試試這個方法:

public static long getDateDiff(long timeUpdate, long timeNow, TimeUnit timeUnit) 
{ 
    long diffInMillies = Math.abs(timeNow- timeUpdate); 
    return timeUnit.convert(diffInMillies, TimeUnit.MILLISECONDS); 
} 

它給你任何單位(天,年,...)的差異。

long timestamp1 = 1500462813000; 
long timestamp2 = System.currentTimeMillis(); 
long diffInDays = getDateDiff(timestamp1, timestamp2, TimeUnit.DAYS); 
+2

本答案使用現在遺留的麻煩的舊日期時間類,由java.time類代替。 –

+0

你是對的 - 我編輯了我的答案 - 它也沒有日期工作。只需要時間戳。 –

1

嘗試:

long diff= System.currentTimeMillis() - givenTimeStamp; 
+4

解釋會很好。你怎麼知道這真的回答了這個問題? –

+0

@TimBiegeleisen你還不明白的問題 –

0

我認爲你應該找到這樣

long timeStamp=System.currentTimeMillis(); 
long diff=(timeStamp-1500462813000); 

System.currentTimeMillis()的差異會比你現在

5

首先,我看到你正在使用的基本類型總是更大longLong。這不是一個好主意。如果你沒有很好的理由使用這個類,那麼只需使用long即可。

您初始化類Long一個整數:

Long timeStamp=1500462813; 

這實際上是一個編譯器錯誤。所以你的代碼不能被編譯。

如果我理解你的問題是正確的,你希望剩下的時間到達日期。你實際上得到它。以毫秒爲單位。您的結果是保留在時間戳日期的時間。

這個結果本身不是Date。這只是毫秒到你想要的日期。

+0

如何找到日期 –

+2

你想要什麼日期?你想要有所不同。你擁有了它。該差異不能被解釋爲日期。 – sgerodes

+1

也許你可以解釋更多關於你的問題。給我們寫你想做的事,妓院。據我瞭解,你做的事情是正確的。你只是不明白你得到了什麼。 – sgerodes