我需要对日期为字符串的开始日期的课程列表进行排序。
排序应基于开始日期,列表中的日期如下所示:
03:20
04:10
09:40
08:00
08:50
01:50
02:30
请注意,此处的排序是自定义的,开始日期从01到07的每个项目都应低于08到12的日期
例如,上面的列表将是:
08:00
08:50
09:40
01:50
02:30
03:20
04:10
我如何做到这一点,我尝试了:
int compare = this.getStartDate().compareTo(o.getStartDate());
if (compare > 0 && this.getStartDate().charAt(1) >= '1' && this.getStartDate().charAt(1) <= '7')
return -1;
if (compare < 0 && o.getStartDate().charAt(1) < '1' && o.getStartDate().charAt(1) > '7')
return 1;
return compare;
最佳答案
使用以下方法,将小时部分加12,将低于“ 08:00”的时间转换为大于“ 12:00”的时间:
public static String getValue(String s) {
String[] splitted = s.split(":");
int hour = Integer.parseInt(splitted[0]);
if (hour < 8) {
hour += 12;
splitted[0] = String.valueOf(hour);
}
return splitted[0] + ":" + splitted[1];
}
现在比较如下:
return getValue(this.getStartDate()).compareTo(getValue(o.getStartDate()));