Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为日期并将其比较为当前日期_Java_Android_Android Recyclerview - Fatal编程技术网

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

Java 将字符串转换为日期并将其比较为当前日期,java,android,android-recyclerview,Java,Android,Android Recyclerview,大家好,这个问题现在快把我逼疯了。我的数据库中有一个名为dueDate的字符串,值为2018年1月18日。我检索了它并将其保存在我的recyclerAdapter中的字符串中,字符串为dueDate=transactionTasks.getposition.get\u transactiontaskpaydet.toString 现在我想将它与当前日期进行比较,如果到期日期在我当前日期之后,它应该以红色显示dueDate 下面是我的密码 String dueDate = transactionT

大家好,这个问题现在快把我逼疯了。我的数据库中有一个名为dueDate的字符串,值为2018年1月18日。我检索了它并将其保存在我的recyclerAdapter中的字符串中,字符串为dueDate=transactionTasks.getposition.get\u 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);
    }
此代码工作正常,但问题是DatedueDate;不推荐使用。当我使用另一种方法,即尝试和捕获,我不会得到任何结果

下面是代码

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();
        }
如果我尝试使用Date duedate=null在try块之外创建日期;我得到一个错误,因为它没有得到try块中的值。这让我发疯,因为我不应该使用不推荐的代码,即使它工作得很好


我找到的所有答案都不适合我。我只需要能够将字符串转换为日期,以便与当前日期进行比较。谢谢大家

我想问题在于你的SimpleDateFormat。如果字符串实际为2018年1月18日,则需要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();
    }
}

我希望这有帮助

使用Calendar cal=Calendar.getInstance;相反,这只是另一个如何用奇怪的语法问题解析日期的问题。我已经链接到一个通用问答,其中解释了如何创建与日期语法匹配的日期格式。如果问答对你不起作用,那么你就没有正确地阅读它!是的,但我缺少的是Locale.ENGLISH,这就是为什么我一直得到错误。因此,它被添加到DateFormat=newSimpleDataFormatMMM d,yyyy,Locale.ENGLISH;它起作用了