java.lang.IllegalArgumentException:解析错误 - 日期格式错误?

时间:2015-04-24 16:01:09

标签: java android sqlite date parseexception

我使用变量CURRENT_DATE将当前日期存储在SQLite数据库中。我发现使用的日期格式是yyyy-mm-dd。我想解析代码中的日期,但是我收到了这个错误:

  

java.lang.IllegalArgumentException:解析错误:               在java.util.Date.parseError

代码如下所示:

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
    String formattedTaskDate = dateFormat.format(new Date(dateStoredAsStringFetchedFromDB));
    Date d = new Date(formattedTaskDate);

首先,我从数据库中获取日期并将其存储在String变量中(因为日期在SQLite中存储为TEXT)然后我执行上述操作但是我得到了异常,因为 parseError < /强>

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

您的日期格式似乎有误。您应该注意,大写M用于表示月份,小写m用于表示分钟。要解决此问题,只需将yyyy-mm-dd更改为yyy-MM-dd

现在,如果你想在将来改变这种格式,你可以这样做:

try {
     DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     Date input = inputFormat.parse(date);
     DateFormat outputFormat = new SimpleDateFormat(" EEEE MMMM-dd-yyyy ", Locale.ENGLISH);
     String finaldate = outputFormat.format(input);
            txtDate.setText(finaldate); <-- just an example of displaying the date 
     }catch (Exception ex) {
            Alerts.CatchError(getBaseContext(), ex.toString());
     }

这会将2015-04-25 12:08:34(yyyy-MM-dd HH:mm:ss)的初始存储日期显示为Friday April-25-2015。您当然可以根据自己的喜好进行更改,只需参考Ankit为您提供的文档即可。

答案 1 :(得分:1)

格式错误,试试这个:

String string = dateStoredAsStringFetchedFromDB;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse(string);

Documentation

答案 2 :(得分:0)

您能否粘贴从数据库返回的dateStoredAsStringFetchedFromDB的值? 返回的值很可能与yyyy-mm-dd格式不匹配。

另请注意,从javadoc(https://developer.android.com/reference/java/text/SimpleDateFormat.html)来看,'m'模式表示分钟而非月份,正如您所期望的那样。