code: public List<DateTimePeriod> toHours() {
          ArrayList<DateTimePeriod> list = new ArrayList<DateTimePeriod>();
  
          // default "current" hour to start datetime
          DateTime currentStart = getStart();
          // calculate "next" hour
          DateTime nextStart = currentStart.plusHours(1);
          // continue adding until we've reached the end
          while (nextStart.isBefore(getEnd()) || nextStart.isEqual(getEnd())) {
              // its okay to add the current
              list.add(new DateTimeHour(currentStart, nextStart));
              // increment both
              currentStart = nextStart;
              nextStart = currentStart.plusHours(1);
          }
  
          return list;
      }
docs: Converts this period to a list of hour periods.  Partial hours will not be
  included.  For example, a period of "January 20, 2009" will return a list
  of 24 hours - one for each hour on January 20, 2009.  On the other hand,
  a period of "January 20, 2009 13:10" would return an empty list since partial
  hours are not included.
  @return A list of hour periods contained within this period