【问题标题】:Convert string to Date and compair it to Current date [duplicate]将字符串转换为日期并将其与当前日期进行比较[重复]
【发布时间】:2017-12-15 20:58:38
【问题描述】:

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

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

下面是我的编码。

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 duedate = null; 在try 块之外创建Date,则会收到错误消息,因为它没有获取try 块内的值。这让我发疯,因为即使它运行良好,我也不应该使用已弃用的代码。

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

【问题讨论】:

  • 使用日历 cal = Calendar.getInstance();而是
  • 这只是另一个“我如何用奇怪的语法解析日期”的问题。我已链接到一个通用问答,其中(除其他外)解释了如何创建与您的日期语法匹配的日期格式。 (如果该问答对您不起作用,那么您没有正确阅读!)

标签: java android android-recyclerview


【解决方案1】:

我认为问题在于您的SimpleDateFormat。如果你的 String 真的是 "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();
    }
}

我希望这会有所帮助!

【讨论】:

  • 是的,但我缺少的是Locale.ENGLISH,这就是我不断收到错误的原因。所以它被添加到DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH); 它工作了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 2015-03-14
  • 2018-07-22
相关资源
最近更新 更多