我有一个对象列表(包括代码和用户界面)我希望过滤到相对日期类别,例如“今天”(但仅限于将来),“本周”(但仅限于将来);我还希望能够添加不同类型的类别(基于对象的其他属性)。我一直在努力实现它,包括存储这些信息。
我一直在尝试像
这样的事情groups.add(
new Group(
"Today",
Util.filterList(
qTasks,
t -> LocalDate.now().isEqual(new LocalDate(t.getDueDateTime()))
)
));
但它看起来非常混乱,并且以后不容易添加。
最好的办法是什么?
答案 0 :(得分:0)
如果您正在使用JodaTime,则可以使用Days API。使用Days.daysBetween(现在,someDateInFuture),然后适当地与您的选择条件进行比较。或者查看DateTime dateTime.isBefore(otherDateTime)api。
一个例子是你有过滤器选择标准:
enum DurationCriteria {
public final int dayDuration;
DurationCriteria(int dayDuration){
this.dayDuration = dayDuration;
}
DAY(1),
WEEK(7)
}
然后根据传递给过滤器的DurationCriteria进行比较:
DateTime endingBound = DateTime.now().plusDays(selectedCriteria.dayDuration);
if(task.getDueDate().isBefore(endingBound)){
//do stuff
}