*/
public class Time implements Comparable {
+ /**
+ *
+ */
+ private static final int HOURS_PER_DAY = 24;
+
+ /**
+ *
+ */
+ private static final int EARLY_HOUR = 3;
+
/**
* Number of seconds per minute.
*/
* @return Converted value.
*/
float asFloat() {
- return (float) _hour + (float) _minute / (float) SECONDS_PER_MINUTE;
+ int hour = _hour;
+ // Hack to make sure that programs appearing shortly after midnight are
+ // sorted
+ // after those running during the day.
+ if (hour <= EARLY_HOUR) {
+ hour += HOURS_PER_DAY;
+ }
+ return (float) hour + (float) _minute / (float) SECONDS_PER_MINUTE;
}
/*
}
/**
- * Compares based on time.
- * @param aObject Time object to compare to.
+ * Compares based on time.
+ *
+ * @param aObject
+ * Time object to compare to.
* @return See {@link Comparable#compareTo(T)}.
*/
public int compareTo(Object aObject) {
if (!(aObject instanceof Time)) {
- throw new RuntimeException("object not an instance of Time");
+ throw new IllegalArgumentException("object not an instance of Time");
}
Time time = (Time) aObject;
return new Float(asFloat()).compareTo(new Float(time.asFloat()));