根据相对日期过滤到类别的最佳方式(“今天”,“本周”等)

时间:2017-05-30 18:47:25

标签: java android time grouping

我有一个对象列表(包括代码和用户界面)我希望过滤到相对日期类别,例如“今天”(但仅限于将来),“本周”(但仅限于将来);我还希望能够添加不同类型的类别(基于对象的其他属性)。我一直在努力实现它,包括存储这些信息。

我一直在尝试像

这样的事情
groups.add(
    new Group(
        "Today", 
        Util.filterList(
            qTasks, 
            t -> LocalDate.now().isEqual(new LocalDate(t.getDueDateTime()))
        )
    ));

但它看起来非常混乱,并且以后不容易添加。

最好的办法是什么?

1 个答案:

答案 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
}