使用新的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
使用新的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
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) { … }
時間是......
Duration duration = Duration.between(LocalDateTime.now(), LocalDateTime.now().plusSeconds(xx));
System.out.println(duration.getSeconds());
「本地...」類故意丟失所有時區和偏離UTC時間的信息。所以這是在這裏使用的錯誤類。 **在夏令時(DST)切換或其他此類異常情況下執行期間,此類代碼失敗**。 –
在這種情況下,我會接受你的...... – user432024
你是怎麼在['java.time'包]找到(http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)時你做了你的研究? –
是的,我知道現在看着它。我在想我可以使用持續時間並從中進行計算? – user432024
@ user432024我在想你應該至少試試。 – DejaVuSansMono