*/
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;
}
/*
*/
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()));