Date1.before(Date2)未返回预期结果

时间:2015-11-08 03:16:39

标签: java

我正在尝试比较日期,以便找到当前日期(今天' s日期)的两个最接近的日期。

但是,我没有使用Date.before()获得预期的结果。

代码在这里:

Date currentDate;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM");

public Date getDate(){
    currentDate = new Date();
    //Toast.makeText(Happenings.this, currentDate, Toast.LENGTH_SHORT).show();
    return currentDate;
}

public String[] compareDate(Date currentDate){
    String[] closestDates = new String[2];
    //Toast.makeText(Happenings.this, sdf.format(currentDate), Toast.LENGTH_SHORT).show();
    try {
        Date date1 = sdf.parse("20/01");
        Date date2 = sdf.parse("09/08");
        Date date3 = sdf.parse("24/12");
        Date[] availableDates = {date1, date2, date3}; // dd/mm
        //Toast.makeText(Happenings.this, sdf.format(date1), Toast.LENGTH_SHORT).show();
        if (currentDate.before(date3)) {
            Toast toast = Toast.makeText(Happenings.this, "Before Festival", Toast.LENGTH_SHORT);
            toast.show();
        }
    }
    catch (ParseException e){
        Toast.makeText(Happenings.this, "Catch", Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    }


    return closestDates;
}

我现在得到的是currentDate.before(date3)评估为false而currentDate.after(date3)评估为true。这与预期不同,因为08/11应该在24/12之前。

1 个答案:

答案 0 :(得分:1)

我可能错了,但是如果你尝试date2.before(date3)并且它将评估为true,那么我猜测只需解析日期和月份就可以将年份设置为默认值1970而不是当前年份。 如果是这种情况,那么我建议你手动设置年份,或者将年份添加到sdf。