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);
已弃用。当我使用另一种使用try
和catch
的方法时,我不会得到任何结果。
以下是代码
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
在try
块之外创建Date duedate = null;
,我会收到错误,因为它没有获取try
块中的值。这让我抓狂,因为即使它完美无缺,我也不应该使用弃用的代码。
我发现的所有答案对我都没有用。我只需要能够将字符串转换为日期,以便将其与当前日期进行比较。谢谢大家
答案 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();
}
}
我希望这有帮助!