将字符串转换为日期并将其转换为当前日期

时间:2017-12-15 20:58:39

标签: java android android-recyclerview

Hello Guys这个问题现在让我发疯了。我的数据库中有一个名为dueDate的字符串,其值为Jan 18, 2018。我检索了它并将其保存在我的recyclerAdapter中的一个字符串中String dueDate = transactionTasks.get(position).get_transactiontaskpaydet().toString();

现在我想将它与当前日期进行比较,如果截止日期是在我当前日期之后,它应该以红色显示dueDate。

贝娄是我的编码。

String dueDate = transactionTasks.get(position).get_transactiontaskpaydet().toString();
    Date cdate = new Date();
    Date ddate = new Date(dueDate);

    if(cdate.after(ddate)){
        holder.date.setTextColor(Color.RED);
    }

此代码完美无缺,但问题是Date(dueDate);已弃用。当我使用另一种使用trycatch的方法时,我不会得到任何结果。

以下是代码

SimpleDateFormat format = new SimpleDateFormat("E, MMM dd yyyy");
    Date curDate = new Date();
        try {
            Date datedue = format.parse(dueDate);
            if(curDate.after(datedue)) {
                holder.date.setTextColor(Color.RED);
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }

如果我尝试使用Datetry块之外创建Date duedate = null;,我会收到错误,因为它没有获取try块中的值。这让我抓狂,因为即使它完美无缺,我也不应该使用弃用的代码。

我发现的所有答案对我都没有用。我只需要能够将字符串转换为日期,以便将其与当前日期进行比较。谢谢大家

1 个答案:

答案 0 :(得分:2)

我认为问题出在您的SimpleDateFormat上。如果您的字符串确实是"Jan 18, 2018",那么您需要SimpleDateFormat匹配,如下所示:

SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy");

我做了一个快速测试方法,它运行良好:

public static void main(String args[]) {
    String dueDate = "Jan 18, 2018";
    SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy");
    Date curDate = new Date();
    try {
        Date datedue = format.parse(dueDate);
        if(curDate.after(datedue)) {
            holder.date.setTextColor(Color.RED);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我希望这有帮助!