Question: Suppose I have a `Collection` of `DateTimes`, how I can filter all `DateTime` objects that have a time between 10h00m and 12h30m? 

For example: 

`new DateTime(2013,1,1,10,0)` - is right, 

`new DateTime(2013,1,1,16,0)` - is not. 

Parameters like month, year, day are not significant.
Any ideas?

Answer: 
You can really take advantage of joda's `LocalTime` class here :

```
LocalTime lowerBound = new LocalTime(10, 0);
LocalTime upperBound = new LocalTime(12, 30);

List<DateTime> filtered = new ArrayList<>();

for (DateTime dateTime : originals) {
    LocalTime localTime = new LocalTime(dateTime);
    if (lowerBound.isBefore(localTime) && upperBound.isAfter(localTime)) {
        filtered.add(dateTime);
    }
}

```

You may need to tweak for inclusive or exclusive, but `LocalTime` is `Comparable`, and on top of that, has friendly compare methods that help readability.
For simplicity i used `Calendar` type class.

This should solve your request:

```
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;
  }

```