我正在尝试将当前日期与存储在数组中的日期进行比较,但我无法使用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"
。我找不到我犯的错误,任何人都可以帮忙找到错误吗?
答案 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
中的日期相同。
编辑:它在您的代码中不可见,但我愿意接受jsonArray
和ScheduleDates
具有相同的长度,而第二个来自第一个。否则,for
循环会崩溃。
编辑2: 您的问题实际上是您的休息语句。您的for
循环只运行一次,因此如果数组的第一项与Today
中的日期匹配,它将停止并打印您的成功消息。如果数组的第一项与Today
中的日期不匹配,它将再次停止并打印失败消息,这也是您所说的情况。
所以,删除break语句,然后for
循环将运行多次,并打印相应的消息,无论是成功还是失败。
如果您只是想找到第一场比赛然后停止,删除else
中的中断语句,请将其保留在{{1}中}}
答案 1 :(得分:0)
仅删除以下日期格式定义的额外空格......
DateFormat TO = new SimpleDateFormat("yyyy-MM-dd");