我有一个Instants列表,我想迭代所有这些并找出它们是否正在发生。这可能与Instants有关,还是让我自己迷惑?
我应该使用两个dateTime的一个用于事件的开始而一个用于之后并检查那个方式吗?
答案 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)
仅比较可能更好的绝对时间,但由于粒度问题也不理想。