2016-12-06 70 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

相关问题