【问题标题】:Issue in date comparision using compareTo() method in android [duplicate]在android中使用compareTo()方法进行日期比较的问题[重复]
【发布时间】:2017-04-19 05:47:26
【问题描述】:

我正在尝试以 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

如果选择的结束日期比一个月大,或者如果选择下个月的日期,则会出现此问题,但如果日期选择来自同一个月,则此操作正常。

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

【问题讨论】:

  • 看看你的格式Strings。您对月份和分钟使用相同的字符。这些应该不一样吧?

标签: android android-datepicker android-date


【解决方案1】:

试试这个,

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-04
    • 2021-03-24
    • 2013-05-18
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多