2017-08-11 200 views
3

首先,我需要使用Java 7,所以我不能使用SE8时间的东西,但我很乐意学习它。寻找一个乔达时间持续时间是0秒长

我有时间的名单如下:

List<Duration> durations; 

大部分这些值是大约8小时之久,但也有一些零(故意)。我如何检查它们是0天,0分,0秒还是0毫秒?我是否需要按照以下方法检查每种方法,或者是否有更简洁的方法?

for(Duration duration : durations){ 
    if(duration.getStandardDays() == 0 && 
     duration.getStandardHours() == 0 && 
     duration.getStandardSeconds() == 0){ 
     //do something 
    } 
} 

我问的原因是我注意到API中存在常量ZERO,我认为这是以某种方式链接到它。我如何比较呢?还是应该?

http://joda-time.sourceforge.net/apidocs/org/joda/time/Duration.html

回答

6

你应该只能够做

if (duration.getMillis()==0) 

getMillis()返回持续时间的长度,单位为毫秒。

+0

哦,我假设getMills()只会得到毫秒,不包括秒,分钟,小时,天等等。但这很有意义,因为它没有遵循getStandardDays(),getStandardHours()等格式。会接受你的答案 - 非常感谢! –

1

ThreeTen-Backport

Joda-Time项目现在处于维护模式。团队建议迁移到java.time类。

Java 8及更高版本的大部分java.time功能都被移植到ThreeTen-Backport项目中的Java 6和Java 7中。

org.threeten.backport.Duration class提供了一个isZero方法来测试零长度。

myDuration.isZero()