【问题标题】:How to compare the current date with string date stored in array?如何将当前日期与存储在数组中的字符串日期进行比较?
【发布时间】:2018-08-21 14:32:04
【问题描述】:

我正在尝试将当前日期与存储在数组中的日期进行比较,但我无法使用 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"。我找不到我犯了什么错误,谁能帮忙找出错误?

【问题讨论】:

  • 代替toast使用日志
  • 使用调试器。或记录案例。
  • 使用 Logcat 查看您的日期是如何保存和显示的。
  • 怎么做,兄弟!在 logcat 中我看不到任何错误@Sotiris M. Magionas
  • 看我下面的帖子

标签: android datetime datetime-comparison


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    使用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 循环会崩溃。

    Edit2: 您的问题实际上是您的中断语句。您的 for 循环仅运行一次,因此如果数组的第一项与 Today 中的日期匹配,它将停止并打印您的成功消息。如果您的数组的第一项与Today 中的日期不匹配,它将再次停止并打印失败消息,正如您所说的那样。

    因此,删除中断语句,然后for 循环将运行尽可能多的次数,并打印相应的消息,无论是成功还是失败。

    如果您只想找到第一个匹配项然后停止,请删除 else 中的 break 语句,但保留 if 中的那个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多