如何将当前日期与存储在数组中的字符串日期进行比较?

时间:2018-03-13 10:58:30

标签: android datetime datetime-comparison

我正在尝试将当前日期与存储在数组中的日期进行比较,但我无法使用if条件来比较日期。

我使用此代码来比较日期:

DateFormat TO = new SimpleDateFormat("yyyy-MM-dd ");
Today = TO.format(Calendar.getInstance().getTime());
for (int i = 0; i < jsonArray.length(); i++) {

    // Today has a value 2018-03-13
    // ScheduleDates[i] has a value 2018-03-13
    // ScheduleDates[10] has a value 2018-03-13
    if (Today.equals(ScheduleDates[i])) {
        Toast.makeText(Main2Activity.this, "Match Found" + ScheduleDates[i] + "--"
                       + StartTimes[i] + "--" + Endtimes[i], Toast.LENGTH_LONG).show();
        break;
    } else {
        Toast.makeText(Main2Activity.this, "Match Not Found", Toast.LENGTH_LONG).show();
        break;
    }
}

但是当我运行循环时,它只显示"match not found"。我找不到我犯的错误,任何人都可以帮忙找到错误吗?

2 个答案:

答案 0 :(得分:0)

使用Log.d("Today",String.valueOf(Today));查看Today变量中的内容。也可以使用

for(int i=0;i<jsonArray.length();i++){

   Log.d("Array",String.valueOf(ScheduleDates[i]));

}

尝试使用logcat自己验证存储在Today变量中的完全日期也存在于您的数组中。如果没有,那就有你的问题。你的if语句运行得很好,数组中的任何日期都与Today中的日期相同。

编辑:它在您的代码中不可见,但我愿意接受jsonArrayScheduleDates具有相同的长度,而第二个来自第一个。否则,for循环会崩溃。

编辑2: 您的问题实际上是您的休息语句。您的for循环只运行一次,因此如果数组的第一项与Today中的日期匹配,它将停止并打印您的成功消息。如果数组的第一项与Today中的日期不匹配,它将再次停止并打印失败消息,这也是您所说的情况。

所以,删除break语句,然后for循环将运行多次,并打印相应的消息,无论是成功还是失败。

如果您只是想找到第一场比赛然后停止,删除else中的中断语句,请将其保留在{{1}中}}

答案 1 :(得分:0)

仅删除以下日期格式定义的额外空格......

        DateFormat TO = new SimpleDateFormat("yyyy-MM-dd");