我怎样才能检查现在正在进行的joda时刻?

时间:2014-01-27 04:36:51

标签: java time calendar jodatime

我有一个Instants列表,我想迭代所有这些并找出它们是否正在发生。这可能与Instants有关,还是让我自己迷惑?

我应该使用两个dateTime的一个用于事件的开始而一个用于之后并检查那个方式吗?

1 个答案:

答案 0 :(得分:1)

假设您在谈论“即时”时表示课程org.joda.time.DateTime,您必须注意答案取决于您的目的所需的粒度。通常情况下,JodaTime中的瞬间精细到毫秒级。如果你想用“现在”比较任何时刻,意思是DateTime.now(),那么我建议使用一个间隔,如下所示:

DateTime now = DateTime.now();
DateTime from = now.minusMinutes(1); // example - maybe you need seconds instead
DateTime to = now.plusMinutes(1); // example - maybe you need seconds instead
Interval range = new Interval(from, to);

for (DateTime test : instants) { // supposing instants as List<DateTime>
  if (range.contains(test)) {
    return test;
  }
}

// here not found any equality, process according to your needs

请记住,如果你使用equals()代替那么你几乎不会碰到你的列表中的任何瞬间。此外,方法equals(Object)比较绝对时间和年表(包括时区)。替代isEqual(ReadableInstant)仅比较可能更好的绝对时间,但由于粒度问题也不理想。