2016-12-06 79 views
-10

使用新的Java 8 DateTime API(java.time)我們如何檢查「最後」捕獲時間是否比配置的秒數早?Java 8日期如何檢查時間是否比X秒老?

例...

最後拍攝時間:13:00:00 當前時間時間:13點零零分31秒

if (last captured time is older then 30 seconds) then 
    do something 
+9

你是怎麼在['java.time'包]找到(http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)時你做了你的研究? –

+0

是的,我知道現在看着它。我在想我可以使用持續時間並從中進行計算? – user432024

+5

@ user432024我在想你應該至少試試。 – DejaVuSansMono

回答

3

Instant類表示UTC中時間軸上的一個時刻,分辨率爲納秒。

Instant then = … ; 
Instant now = Instant.now(); 

Duration表示時間以秒和nanoseconds術語的跨度。

Duration d = Duration.between(then , now); 

提取整秒的數量。

long secondsElapsed = d.getSeconds() ; 

比較你的限制。使用TimeUnit枚舉來轉換而不是硬編碼一個「魔術」數字。例如,將五分鐘轉換爲幾秒鐘。

long limit = TimeUnit.MINUTES.toSeconds(5); 

比較。

if(secondsElapsed > limit) { … } 
0

時間是......

Duration duration = Duration.between(LocalDateTime.now(), LocalDateTime.now().plusSeconds(xx)); 
System.out.println(duration.getSeconds()); 
+2

「本地...」類故意丟失所有時區和偏離UTC時間的信息。所以這是在這裏使用的錯誤類。 **在夏令時(DST)切換或其他此類異常情況下執行期間,此類代碼失敗**。 –

+0

在這種情況下,我會接受你的...... – user432024

相關問題