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