使用android中的compareTo()方法在日期比较中发出问题

时间:2017-04-19 05:47:27

标签: android android-datepicker android-date

我试图在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.");
}

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

04/20/2017 11:07

05/18/2017 11:22

如果结束日期选择更长一个月或选择下个月的日期,则会出现此问题,但如果日期选择来自同一个月,那么此方法可以正常工作。

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

1 个答案:

答案 0 :(得分:0)

试试这个,

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;
    }
}