查找 Joda 持续时间是否为 0 秒

Finding if a Joda Time Duration is 0 seconds long

首先,我需要使用 Java 7,所以我不能遗憾地使用 SE8 Time 的东西,尽管我很想学习它!

我有一个持续时间列表如下:

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 中有常量零,我假设这与它有某种联系。我该如何与之比较呢?或者我应该?

https://www.joda.org/joda-time/apidocs/org/joda/time/Duration.html

你应该可以做到

if (duration.getMillis()==0)

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

ThreeTen-Backport

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

Java 8 及更高版本的许多 java.time 功能被反向移植到 ThreeTen-Backport 项目中的 Java 6 和 Java 7。

用于测试零长度的 org.threeten.backport.Duration class offers a isZero 方法。

myDuration.isZero()

您可以尝试使用 duration.isEqual(Duration.ZERO)isEqual 方法在 AbstractDuration.java and the static Duration.ZERO value as defined here 中定义。