2017-05-30 12 views
0

私は、コードやUIの両方のオブジェクトのリストを持っています。 "今日"(ただし、将来的にのみ)、 "今週"(ただし、将来は再び)。また、(オブジェクトの他のプロパティに基づいて)異なる種類のカテゴリを追加できるようにしたいと考えています。私は実際にこの情報の格納を含めて実装する方法に苦労しています。相対日付(「今日」、「今週」など)に基づいてカテゴリにフィルタする最も良い方法

は私が

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

ようなものをしようとしてきたが、それは非常に厄介な、そして将来的にに追加することは容易ではないに見えます。

これを行うにはどうすればよいでしょうか?

+0

今日は持ってwhouldを今と終わりの間に起こっている出来事?今週は、今週から今週の日曜日の間になりますか? – Juan

+1

@Juanはい、具体的な実装は探していませんが、この情報を保存して一般的に実装する方法について詳しく説明しています。 – davidwroxy

+0

タスクはYYYYdddとして保存できます.YYYYは年、dddは1月以降の日数1st。そしてその週の年と年の週番号。フィルタリングする方が簡単です。これがあなたの質問が目指しているものなのかどうか分かりません... – Juan

答えて

0

JodaTimeを使用している場合は、Days APIを使用できます。 Days.daysBetween(now、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 
} 
+0

この情報を保存する最良の方法は何ですか?私も時間以外の基準を持っています。 – davidwroxy

+0

sudoコードの編集を参照してください。 – Submersed

+0

えええええええええええええええええええええええええるのは、時間以外の異なる基準を使用する場合は、異なる実装を持つ共通のインタフェースメソッドを持つ抽象クラスまたはインタフェースを提供する必要があります。次に、選択したフィルタに基づいて、指定された「フィルタ」オブジェクトを変更します。 – Submersed

関連する問題