android 中使用 compareTo() 方法进行日期比较的问题

Issue in date comparision using compareTo() method in android

我正在尝试以 24 小时格式比较 android 中的两个日期,以下是日期格式,但是当一个接一个地尝试时,两者都给出相同的结果。

SimpleDateFormat simpleDateFormat24Hour = new SimpleDateFormat("mm/dd/yyyy HH:mm");

SimpleDateFormat simpleDateFormat24Hour = new SimpleDateFormat("mm/dd/yyyy HH:mm", Locale.US);

Log.e(startDateEditText.getText().toString().trim());
Log.e(endDateEditText.getText().toString().trim());
Date startDate = simpleDateFormat24Hour.parse(startDateEditText.getText().toString().trim());
Date endDate = simpleDateFormat24Hour.parse(endDateEditText.getText().toString().trim());
if (startDate.compareTo(endDate) > 0) {
    showAlertDialog("End date should greater than start date.");
}

以下分别是开始日期和结束日期的输入

2017 年 4 月 20 日 11:07

2017 年 5 月 18 日 11:22

如果结束日期 selection 比 selection 晚一个月或者如果 select 下个月的日期那么这个问题就会出现,但是如果日期 selection 来自同一个月那么这个工作正常.

请提出一些解决此问题的提示。提前致谢。

试试这个,

if (false == isDateAfter("04/20/2017 11:07", "05/18/2017 11:22")) {
     showAlertDialog("End date should greater than start date.");
}

isDateAfter 方法:

public static boolean isDateAfter(String startDate, String endDate) {
    try {
        String myFormatString = "dd-MM-yyyy"; // for example
        SimpleDateFormat df = new SimpleDateFormat(myFormatString, Locale.ENGLISH);
        Date endingDate = df.parse(endDate);
        Date startingDate = df.parse(startDate);

        return endingDate.equals(startingDate) || !endingDate.after(startingDate);
    } catch (Exception e) {
        return false;
    }
}