检查数组以查看它是否具有已经过去的日期

Checking an array to see if it has dates which have already past

我有一组任务对象。任务有截止日期。该数组按从最早到最晚的日期排序。我做了一个方法,应该 return 今天之前的最后一个任务的位置。换句话说,它必须检查每个任务是否在今天之前,一旦它到达今天之后的任务停止和 return 今天之前的最后一个任务的位置。如果第一个任务是在今天之后,它应该 return -1。但是,该方法未按预期运行。我能知道为什么这不起作用吗:

public int overdue() {
    int i = -1;
    this.sort();
    Date Today = new Date();
    DateFormat dateFormat = new SimpleDateFormat("dd MMMMM yyyy");
    String todayString = dateFormat.format(Today);
    try {
        Today = new SimpleDateFormat("dd MMMM yyyy").parse(todayString);
    } catch (ParseException ex) {
        Logger.getLogger(HomeworkDiary.class.getName()).log(Level.SEVERE, null, ex);
    }
    while (Today.after(diary[i+1].getDue_Date().getTime()) == true) {
            i++;
    }
    return i;
}

如果您的 dairy 数组只包含今天之前的截止日期,您将得到一个 ArrayIndexOutOfBoundsException。

假设你的 dairy[].getDue_Date() returns 是一个 Date 对象,我会这样写:

int lastOverDue = -1;
int i = 0;
while (i < dairy.length && Today.after(dairy[i].getDue_Date()) ) {
  lastOverDue++;
  i++;
}

让我知道它是否适合你。