1

の があるとします。10 時 00 分から 12 時 30 分までの時間を持つすべてのオブジェクトをCollectionどのDateTimesようにフィルタリングできますか?DateTime

例えば:

new DateTime(2013,1,1,10,0)- は正しい、

new DateTime(2013,1,1,16,0)- ではありません。

月、年、日などのパラメータは重要ではありません。何か案は?

4

3 に答える 3

1
List<DateTime> filtered = new ArrayList<>();    
for (DateTime dt : mycollection){
    if (dt.getHourOfDay >= 10 && dt.getHourOfDay <= 12){
        if (dt.getHourOfDay != 12 || 
            (dt.getHourOfDay == 12 && dt.getMinuteOfHour <= 30)){
                filtered.add(dt);
        }
    }
}
于 2013-07-25T12:45:33.060 に答える
0

簡単にするために、Calendar型クラスを使用しました。

これはあなたの要求を解決するはずです:

public List<Calendar> filterDateTime(ArrayList<Calendar> dateTimeList) {
      List<Calendar> dateTimeFilteredList = new ArrayList<Calendar>();

      for (int i=0;i < dateTimeList.size(); i++) {
          Calendar currentDateTime =  Calendar.getInstance();
          currentDateTime.setTime(dateTimeList.get(i).getTime());

          // Setting the bottom dateTime value
          Calendar filterFrom = Calendar.getInstance();
          filterFrom.setTime(currentDateTime.getTime());
          filterFrom.set(Calendar.HOUR_OF_DAY, 10);
          filterFrom.set(Calendar.MINUTE, 00);

          // Setting the upper dateTime value
          Calendar filterTo = Calendar.getInstance();
          filterTo.setTime(currentDateTime.getTime());
          filterTo.set(Calendar.HOUR_OF_DAY, 12);
          filterTo.set(Calendar.MINUTE, 30);

          if(currentDateTime.after(filterFrom) && currentDateTime.before(filterTo)) {
              dateTimeList.add(currentDateTime);
          }
      }
      return dateTimeFilteredList;
  }
于 2013-07-25T12:50:12.677 に答える